Add image to item (spinner)

前端 未结 1 429
轻奢々
轻奢々 2021-01-22 18:28

Hi I am an amateur in android .I would like to add images to my spinner\'s item. Unfortunately, I dont know how to do it . Below is my xml file and MainActivity. Thanks for rea

相关标签:
1条回答
  • 2021-01-22 18:58

    Use custom Spinner

    activity_main

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity">
    
        <Spinner
            android:id="@+id/simpleSpinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dp" />
    
    </RelativeLayout>
    


    custom_spinner_items.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:padding="5dp"
            android:src="@drawable/ic_launcher" /><!--Make sure image is present in Drawable folder-->
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="@dimen/activity_horizontal_margin"
            android:text="Demo"
            android:textColor="#000" />
    </LinearLayout>
    

    MainActivity.java

    package example.abhiandriod.customspinnerexample;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    
    
        String[] countryNames={"India","China","Australia","Portugle","America","New Zealand"};
        int flags[] = {R.drawable.india, R.drawable.china, R.drawable.australia, R.drawable.portugle, R.drawable.america, R.drawable.new_zealand};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //Getting the instance of Spinner and applying OnItemSelectedListener on it
            Spinner spin = (Spinner) findViewById(R.id.simpleSpinner);
            spin.setOnItemSelectedListener(this);
    
            CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),flags,countryNames);
            spin.setAdapter(customAdapter);
        }
    
    
        //Performing action onItemSelected and onNothing selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int position,long id) {
            Toast.makeText(getApplicationContext(), countryNames[position], Toast.LENGTH_LONG).show();
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    

    CustomAdapter.java

    package example.abhiandriod.customspinnerexample;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class CustomAdapter extends BaseAdapter {
        Context context;
        int flags[];
        String[] countryNames;
        LayoutInflater inflter;
    
        public CustomAdapter(Context applicationContext, int[] flags, String[] countryNames) {
            this.context = applicationContext;
            this.flags = flags;
            this.countryNames = countryNames;
            inflter = (LayoutInflater.from(applicationContext));
        }
    
        @Override
        public int getCount() {
            return flags.length;
        }
    
        @Override
        public Object getItem(int i) {
            return null;
        }
    
        @Override
        public long getItemId(int i) {
            return 0;
        }
    
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view = inflter.inflate(R.layout.custom_spinner_items, null);
            ImageView icon = (ImageView) view.findViewById(R.id.imageView);
            TextView names = (TextView) view.findViewById(R.id.textView);
            icon.setImageResource(flags[i]);
            names.setText(countryNames[i]);
            return view;
        }
    }
    

    Source from this website

    0 讨论(0)
提交回复
热议问题