Как изменить цвет текста элемента простого списка

У меня есть ListActivity, и я показываю один список:

setListAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_single_choice, mStringList)); 

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

Как я должен это делать?

Solutions Collecting From Web of "Как изменить цвет текста элемента простого списка"

Другим простейшим способом является создание файла макета, содержащего текстовое представление, которое вы хотите использовать с помощью textSize, textStyle, цвета и т. Д., Которые вы предпочитаете, а затем используйте его с ArrayAdapter.

Например mytextview.xml

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv" android:textColor="@color/font_content" android:padding="5sp" android:layout_width="fill_parent" android:background="@drawable/rectgrad" android:singleLine="true" android:gravity="center" android:layout_height="fill_parent"/> 

А затем используйте его с вашим ArrayAdapter, как обычно, как

 ListView lst = new ListView(context); String[] arr = {"Item 1","Item 2"}; ArrayAdapter<String> ad = new ArrayAdapter<String>(context,R.layout.mytextview,arr); lst.setAdapter(ad); 

Таким образом вам не нужно будет создавать для него настраиваемый адаптер.

Я понимаю, что этот вопрос немного стар, но вот очень простое решение, которое отсутствовало. Вам не нужно создавать пользовательский ListView или даже настраиваемый макет.

Просто создайте анонимный подкласс ArrayAdapter и переопределите getView (). Пусть super.getView () обрабатывает весь тяжелый подъем. Поскольку simple_list_item_1 – это просто текстовое представление, вы можете его настроить (например, установить textColor), а затем вернуть его.

Вот пример из одного из моих приложений. Я показываю список последних мест, и я хочу, чтобы все вхождения «Текущее местоположение» были синими, а остальные – белыми.

 ListView listView = (ListView) this.findViewById(R.id.listView); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MobileMuni.getBookmarkStore().getRecentLocations()) { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) super.getView(position, convertView, parent); String currentLocation = RouteFinderBookmarksActivity.this.getResources().getString(R.string.Current_Location); int textColor = textView.getText().toString().equals(currentLocation) ? R.color.holo_blue : R.color.text_color_btn_holo_dark; textView.setTextColor(RouteFinderBookmarksActivity.this.getResources().getColor(textColor)); return textView; } }); 

Вы просто переопределите метод ArrayAdapter для ArrayAdapter

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, mStringList) { @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); TextView text = (TextView) view.findViewById(android.R.id.text1); text.setTextColor(Color.BLACK); return view; } }; 

Самый простой способ сделать это без необходимости создавать что-либо дополнительное – это просто изменить простой список TextView :

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, strings) { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) super.getView(position, convertView, parent); textView.setTextColor({YourColorHere}); return textView; } }; 

Простым словом «вы не можете сделать это через простой setListAdapter» . Вы должны использовать пользовательское listview для свободного изменения цвета текста или любых других представлений

Для Custom Listview вы можете перейти по этой ссылке

Вы можете использовать метод setTextColor (int) или добавить стиль для изменения цвета текста.

 <style name="ReviewScreenKbbViewMoreStyle"> <item name="android:textColor">#2F2E86</item> <item name="android:textStyle">bold</item> <item name="android:textSize">10dip</item> 

Я также столкнулся с такой ситуацией. Вы можете обрабатывать вышеуказанный метод. Но просто, если вы пропустите simple_dropdown_item_1line в качестве ресурса. По умолчанию это будет черный цвет.

Это мой код, который я достиг в такой ситуации.

 ArrayAdapter<String> arrAdapter = new ArrayAdapter<String>(context,android.R.layout.simple_dropdown_item_1line,countryList); listView.setAdapter(arrAdapter); 

Ваш код ниже:

 setListAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_dropdown_item_1line, mStringList)); 

Фактически для раскрывающегося списка используется android.R.layout.simple_dropdown_item_1line. Я настоятельно рекомендую вам увидеть этот макет. Это просто простой текст. это все. Это свойство не повлияет на вашу задачу. Я проверил, он отлично работает.

Попробуйте этот код вместо android.r.layout.simple_list_item_single_choice создать свой собственный макет:

 <?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:checkMark="?android:attr/listChoiceIndicatorSingle" android:gravity="center_vertical" android:padding="5dip" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@android:color/black" android:textStyle="bold"> </CheckedTextView> 

Если вы хотите сохранить весь стиль, но изменить несколько деталей, вы можете использовать стиль по умолчанию, определенный на Android, и изменить то, что вы хотите

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:gravity="center_vertical" android:textColor="@android:color/background_light" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:background="?android:attr/activatedBackgroundIndicator" android:minHeight="?android:attr/listPreferredItemHeightSmall" /> 

Затем установите адаптер, используя:

 setListAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item_custom, mStringList)); 

Источник: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/layout/simple_list_item_activated_1.xml

Создайте xml-файл в res / values ​​и скопируйте приведенный ниже код

 <style name="BlackText"> <item name="android:textColor">#000000</item> </style> 

И указать стиль в действии в манифесте, как показано ниже

  android:theme="@style/BlackText" 

Если вы создаете класс, который расширяет Адаптер, вы можете использовать родительскую переменную для получения контекста.

 public class MyAdapter extends ArrayAdapter<String> { private Context context; @Override public View getView(int position, View convertView, ViewGroup parent) { context = parent.getContext(); context.getResources().getColor(R.color.red); return convertView; } } 

Вы можете сделать то же самое с RecyclerView.Adapter, но вместо getview () вы будете использовать onCreateViewHolder ().

Попробуйте этот код …

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffff00"> <ListView android:id="@+id/android:list" android:layout_marginTop="2px" android:layout_marginLeft="2px" android:layout_marginRight="2px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/shape_1" android:listSelector="@drawable/shape_3" android:textColor="#ffff00" android:layout_marginBottom="44px" /> </RelativeLayout>