Intereting Posts
Есть ли способ узнать, скомпилирована ли определенная зависимость в файле gradle, возвращая логическое значение Как изменить имя игры LIBGDX по умолчанию? OnOptionsItemSelected не вызывается при использовании actionLayout (SherlockActionBar) Android NumberPicker без мигающего курсора Может ли кто-нибудь подтвердить эту проблему (ограниченное количество файловых дескрипторов на некоторых устройствах Android)? Android: как изменить макет при нажатии кнопки? Есть ли принятая передовая практика по созданию асинхронных HTTP-запросов в Android? Сбой Android с полупрозрачным заставкой Почему эмулятор Android сообщает «неизвестное виртуальное устройство», когда устройство находится в моем каталоге пользователя? Уникальный идентификатор контакта Сообщение Android logcat (E / SMD: DCD on) Android, Как читать QR-код в моем приложении? Как определить отмена щелчка диалогового окна datepicker? Сбой сертификата ssl от Charles не удалось из-за сбоев сети Есть ли способ скрыть верхние и нижние значения в NumberPicker

Цвет текста в ListView Android

Я пытаюсь установить ListView textColor в черный цвет, поскольку я использую белый фон.

Вот моя MailActivity

public class MailActivity extends ListActivity { String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mails); setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)); } } 

И мой XML

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Empty set" android:textColor="#000000" /> </LinearLayout> 

Я получаю фон как белый, но не знаю, где установить передний план на черный. Я пробовал в xml и, похоже, это не помогает.

Solutions Collecting From Web of "Цвет текста в ListView Android"

Хорошо, вот некоторые вещи, о которых вам следует знать:

  1. Цвет фона, который вы устанавливаете в xml-файле, относится к активности, а не к элементам ListItems, которые вы пытаетесь определить.
  2. Каждый элемент списка имеет свой собственный файл макета, который должен быть передан или завышен, если вы используете сложный макет для элемента списка.

Я попытаюсь объяснить это с помощью примера кода:

**** Давайте начнем с макета ListItems ** : сохраните его в папке res/layout вашего Android-проекта, скажем ** list_black_text.xml

 <?xml version="1.0" encoding="utf-8"?> <!-- Definig a container for you List Item--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="center_vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- Defining where should text be placed. You set you text color here--> <TextView android:id="@+id/list_content" android:textColor="#000000" android:gravity="center" android:text="sample" android:layout_margin="4dip" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 

Ну, простой макет с TextView если быть точным. Вы должны иметь идентификатор, назначенный TextView, чтобы использовать его.

Теперь придет к вам экран / активность / главный макет, так как я сказал, что вы определяете фон на своем экране с помощью android:background атрибут. Я вижу, что вы также определили TextView, и я подозреваю, что вы пытаетесь определить там элемент контента / списка, чего совсем не нужно.

Вот отредактированный макет:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE --> </LinearLayout> 

И, наконец, самое главное, установите адаптер.

 setListAdapter(new ArrayAdapter<String>( this, R.layout.list_black_text, R.id.list_content, listItems)); 

Обратите внимание на ресурс компоновки, который мы передаем в адаптер R.layout.list_black_text , и R.id.list_content который мы объявили ID TextView. Я также изменил ArrayAdapter на тип String, поскольку он является общим.

Надеюсь, это все объясняет. Отметьте мой ответ, если вы согласитесь.

Беспокойный, но хороший быстрый способ
Вы также можете сделать это с помощью быстрого исправления, если вы не хотите идти вперед с определением сложного макета и т. Д.

Пока экземпляр адаптера объявляет внутренний класс для этого, вот пример кода:

  ArrayAdapter<String> adapter=new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, listItems){ @Override public View getView(int position, View convertView, ViewGroup parent) { View view =super.getView(position, convertView, parent); TextView textView=(TextView) view.findViewById(android.R.id.text1); /*YOUR CHOICE OF COLOR*/ textView.setTextColor(Color.BLUE); return view; } }; /*SET THE ADAPTER TO LISTVIEW*/ setListAdapter(adapter); 
  1. Создайте файл стилей, например: my_styles.xml и сохраните его в res/values .
  2. Добавьте следующий код:

     <?xml version="1.0" encoding="utf-8"?> <resources> <style name="ListFont" parent="@android:style/Widget.ListView"> <item name="android:textColor">#FF0000</item> <item name="android:typeface">sans</item> </style> </resources> 
  3. Добавьте свой стиль в определение своей Activity в AndroidManifest.xml в качестве атрибута android:theme и назначьте в качестве значения имя стиля, который вы создали. Например:

     <activity android:name="your.activityClass" android:theme="@style/ListFont"> 

ПРИМЕЧАНИЕ: здесь появился Widget.ListView . Также проверьте это .

Я клонировал simple_list_item_1 (Alt + Click) и поместил копию в папку res/layout , переименовал ее в list_white_text.xml с этим содержимым:

 <?xml version="1.0" encoding="utf-8"?> <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="@color/abc_primary_text_material_dark" android:minHeight="?android:attr/listPreferredItemHeightSmall" /> 

android:textColor="@color/abc_primary_text_material_dark" переводится в белый цвет на моем устройстве.

Затем в java коде:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_white_text, myList); 

Вы должны определить цвет текста в макете * simple_list_item_1 *, который определяет макет каждого из ваших элементов.

Вы задаете цвет фона LinearLayout, а не ListView. Цвет фона дочерних элементов LinearLayout по умолчанию прозрачен (в большинстве случаев).

И вы задаете черный цвет текста для TextView, который не является частью вашего ListView. Это отдельный элемент (дочерний элемент LinearLayout) здесь.

Никогда не используйте getApplicationContext() . Просто используйте свою деятельность как контекст. Посмотрите, поможет ли это.

Пожалуйста, проверьте здесь: CommonsWare отвечает

Вы можете сделать это в своем коде:

 final ListView lv = (ListView) convertView.findViewById(R.id.list_view); for (int i = 0; i < lv.getChildCount(); i++) { ((TextView)lv.getChildAt(i)).setTextColor(getResources().getColor(R.color.black)); }