Подтвердить что ты не робот

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

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

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

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

Как мне это сделать?

4b9b3361

Ответ 1

Другим простейшим способом является создание файла макета, содержащего текстовое представление, которое вы хотите использовать с помощью 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);

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

Ответ 2

Я понимаю, что этот вопрос немного стар, но здесь действительно простое решение, которое отсутствовало. Вам не нужно создавать пользовательский 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;
    }
});

Ответ 3

Вы просто переопределите метод getView 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;
    }
};

Ответ 4

Самый простой способ сделать это без необходимости создавать что-либо дополнительное - это просто изменить простой список 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;
            }
        };

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

Я также столкнулся с такой ситуацией. Вы можете обрабатывать вышеуказанный метод. но просто, если вы пройдете 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. Я настоятельно рекомендую вам увидеть это содержимое макета один раз. Это просто простой текст. это все. Это свойство не повлияет на вашу задачу. Я проверил, он работает нормально.

Ответ 8

Попробуйте этот код вместо 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>

Ответ 9

Если вы хотите сохранить весь стиль, но изменить несколько деталей, вы можете использовать стиль по умолчанию, определенный на 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

Ответ 10

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

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

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

 android:theme="@style/BlackText"

Ответ 11

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

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().

Ответ 12

попробуйте этот код...

<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>