I saw many topics about how to change spinner's text color,but i couldnt understand how to use
spinner_item.xml
What shall i really do in java code:? Any responses will be aprecieted Please answer clearly with as more details as you can
I saw many topics about how to change spinner's text color,but i couldnt understand how to use
spinner_item.xml
What shall i really do in java code:? Any responses will be aprecieted Please answer clearly with as more details as you can
Here You have to set your spinner_item.xml in your array adapter. Add this piece of code in your .java file
Spinner yourSpinner; ArrayAdapter yourAdapter; yourSpinner= (Spinner) findViewById(R.id.yourSpinnerID); yourSpinner.setAdapter(yourAdapter); yourAdapter= new ArrayAdapter(this, R.layout.spinner_item, value); //here value is your items in spinner..
A complete answer for me would be something like:
public class ee extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ww); addListenerOnSpinnerItemSelection(); } public void addListenerOnSpinnerItemSelection() { ArrayList array = new ArrayList(); array.add("item0"); Spinner spinner1; ArrayAdapter mAdapter; spinner1 = (Spinner) findViewById(R.id.spinner2); mAdapter = new ArrayAdapter(this, R.layout.spinner_item, array); spinner1.setAdapter(mAdapter); } }
and in res/layout add new xml file:
(in spinner_item.xml)
Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView> arg0, View view, int arg2, long arg3) { ((TextView) arg0.getChildAt(0)).setTextColor(Color.RED); } @Override public void onNothingSelected(AdapterView> arg0) { } } ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_row, list); spinner.setAdapter(adapter);
list_row.xml
This is the simplest Method which I executed for spinner's text. I know its late but it will help some one.
select_gender.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView> parent, View view, int position, long id) { // give the color which ever you want to give to spinner item in this line of code ((TextView)parent.getChildAt(position)).setTextColor(Color.parseColor("#646b99")); spinner_selected_gender=gender_list.get(position); Toast.makeText(getApplicationContext(),"You selected"+spinner_selected_gender,Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView> parent) { } });
Spinner spnCategory= (Spinner)findViewById(R.id.my_spinner); .. ArrayAdapter adptSpnCategory = new ArrayAdapterthis,R.layout.custom_spinner_item, alCategoryName); adptSpnCategory.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spnCategory.setAdapter(adptSpnCategory); spnCategory.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView> arg0, View arg1,int arg2, long arg3) { } public void onNothingSelected(AdapterView> arg0) { } });
I have done this as following: I have used the getDropDownView()
and getView()
methods.
Use getDropDownView()
for opened Spinner
.
@Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater vi = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.context_row_icon, null); } TextView mTitle = (TextView) view.findViewById(R.id.context_label); ImageView flag = (ImageView) view.findViewById(R.id.context_icon); mTitle.setText(values[position].getLabel(activity)); if (!((LabelItem) getItem(position)).isEnabled()) { mTitle.setTextColor(activity.getResources().getColor( R.color.context_item_disabled)); } else { mTitle.setTextColor(activity.getResources().getColor( R.color.context_item)); } return view; }
And use getView()
for closed Spinner
.
@Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater vi = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.context_row_icon, null); } TextView mTitle = (TextView) view.findViewById(R.id.context_label); ImageView flag = (ImageView) view.findViewById(R.id.context_icon); mTitle.setText(values[position].getLabel(activity)); mTitle.setTextColor(activity.getResources().getColor( R.color.context_item_disabled)); return view; }
From the API level 16 and above, you can use following code to change the drop down icon in spinner. just goto onItemSelected in setonItemSelectedListener and change the drawable of textview selected like this.
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView> parent, View view, int position, long id) { // give the color which ever you want to give to spinner item in this line of code //API Level 16 and above only. ((TextView)parent.getChildAt(position)).setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,ContextCompat.getDrawable(Activity.this,R.drawable.icon),null); //Basically itis changing the drawable of textview, we have change the textview left drawable. } @Override public void onNothingSelected(AdapterView> parent) { } });
hope it will help somebody.
Building on noobProgrammer answer, as singleLine has been deprecated, a quick updated version of the spinner_item.xml for anyone who is looking for a answer for this.