Intereting Posts
Проблема импорта архивов проектов Android в Eclipse Не удалось создать Jenkins из-за отсутствия SDK для Android. После обновления – Ошибка: не удалось найти: com.google.android.gms: play-services: 5.2.8 Android: Лучше ли создавать новый фрагмент каждый раз при щелчке элемента навигационного элемента или загружать ранее созданные фрагменты? Интеграция MySpace, ключ Api Как подавить предупреждение «Избегайте использования SDK с пакетом SDK»? Как создать сокет Android RFCOMM без каких-либо входных данных от пользователя? Темы в Android? Есть ли удобный способ создания Parcelable классов данных в Android с Kotlin? Google Map Api v2 показывает сообщение об ошибке «V / GoogleSignatureVerifier: подпись недействительно» в журнале Android: проверьте, разрешены ли службы определения местоположения с помощью поставщика плавного доступа Проект Android, ссылающийся на «нормальный» проект java в eclipse, поскольку обновление инструментов sdk 17 Обмен изображениями и текстом с помощью Facebook на Android Что такое инструмент «dumpsys» для Android ADB и каковы его преимущества? Изменить цвет фона флажка в android

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

У меня есть 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>