Измените цвет ТЕКСТА (не фона) на счетчике при выборе элемента

У меня есть счетчик с несколькими опциями, каждый из которых отображает простую строку. Первоначально текст белый. Однако, если пользователь выбирает параметр (чтобы он стал тем, что отображается сверху), я бы хотел, чтобы этот текст стал красным.

Как я могу это сделать?

EDIT: решено

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { ((TextView) arg1).setTextColor(Color.parseColor("#E3170D")); } 

Solutions Collecting From Web of "Измените цвет ТЕКСТА (не фона) на счетчике при выборе элемента"

Если пользователь выбирает параметр (чтобы он стал тем, что отображается сверху), я бы хотел, чтобы этот текст стал красным.

Таким образом, вы, скорее всего, создали OnItemSelectedListener () для своего Spinner. Таким образом, в методе onItemSelected () вы можете просто изменить цвет текста.

псевдокод:

 public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { TextView selectedText = (TextView) parent.getChildAt(0); if (selectedText != null) { selectedText.setTextColor(Color.RED); } } 

Надеюсь, поможет.

См. Этот ответ здесь, и я скопирую и вставьте его

  1. Создайте собственный макет вида (например, из TextView)
  2. Создайте селектор и установите его как фон этого вида.
  3. Установите Spinner с пользовательским представлением

Селектор: custom_selector.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@color/light_grey" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/light_grey" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/light_grey" /> <item android:state_selected="true" android:drawable="@color/light_grey"/> <item android:drawable="@color/white" /> </selector> 

Макет пользовательского вида: my_simple_item

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lines="1" android:padding="5dip" android:background="@drawable/custom_selector"/> 

Инициализационный счетчик:

 String[] items = new String[] {"One", "Two", "Three"}; Spinner spinner = (Spinner) findViewById(R.id.mySpinner); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_simple_item, items); 

Надеюсь это поможет

Некоторые из вас, использующие MaterialBetterSpinner и привязывающие ваши макеты, все это не поможет, попробуйте это, надеюсь, что это поможет вам:

 public class MyAdapter extends ArrayAdapter<String> { public MyAdapter(Context context, int textViewResourceId, List<String> objects) { super(context, textViewResourceId, objects); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } @Override public View getView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } public View getCustomView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); final YourXMLBinding rowBinding = DataBindingUtil.inflate(inflater, R.layout.yourXML, parent,false); rowBinding.tv1.setText(mMy.getValues().get(position)); if(position == mMy.getCurrentIndex()) { rowBinding.tv1.setTypeface(Typer.set(getContext()).getFont(Font.ROBOTO_BOLD));//change font rowBinding.tv1.setTextColor(ContextCompat.getColor(getContext(), R.color.yourColor));//change color } return rowBinding.getRoot(); } } 

YourXML – это примерно так:

 <?xml version="1.0" encoding="utf-8"?> <layout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@color/colorBackgroundStart"> <TextView android:id="@+id/tv1" android:layout_width="0dp" android:layout_weight="0.7" android:layout_height="30dp" android:textColor="#fff" android:textSize="16dp" android:layout_marginTop="8dp" android:layout_marginBottom="10dp" android:layout_marginLeft="8dp"/> </layout> 

Создайте счетчик с этим адаптером и вашим XML:

 final MyAdapter adapter = new MyAdapter(getContext(), R.layout.yourXML, s.getValues()); final MaterialBetterSpinner spinner = new MaterialBetterSpinner(getContext()); spinner.setAdapter(adapter); 

Создать как:

  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@color/red" /> <item android:drawable="@android:color/transparent" /> </selector> 

И в вашей деятельности xml:

  <Spinner............... android:drawSelectorOnTop="true" android:background="@drawable/sample"/> 

Просто добавьте OnItemSelectedListener к вашему OnItemSelectedListener .

 qtySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ((TextView) view).setTextColor(Color.BLACK); //Change selected text color } @Override public void onNothingSelected(AdapterView<?> parent) { } });