Цвет текста выбора номера Android

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

XML-код:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@layout/gradient_blue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:textSize="25sp"
        android:textColor="#fff"
        android:textStyle="bold"
        android:text="Please select difficulty level"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@drawable/category_seperator"/>

    <LinearLayout
        android:padding="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <NumberPicker
            android:id="@+id/numberPicker1"
            android:layout_width="wrap_content"
            android:minWidth="100dp"
            android:layout_margin="10dp"

            android:layout_height="wrap_content"/>
            <!--#019687-->
        <Button
            android:background="#019687"

            android:id="@+id/setting_confirm"
            android:layout_width="wrap_content"
            android:layout_margin="10dp"
            android:layout_height="wrap_content"
            android:textSize="30sp"
            android:textColor="#fff"
            android:padding="15dp"
            android:text="OK"/>


    </LinearLayout>

</LinearLayout>

Java-код:

    final Dialog d = new Dialog(context);
d.requestWindowFeature(Window.FEATURE_NO_TITLE);

d.setContentView(R.layout.dialog_settings);

final NumberPicker n = (NumberPicker) d.findViewById(R.id.numberPicker1);

String easy = Html.fromHtml("<font color=\"white\">EASY</font>").toString();
String medium = Html.fromHtml("<font color=\"white\">MEDIUM</font>")+"";
String hard = Html.fromHtml("<font color=\"white\">HARD</font>")+"";
String tough = Html.fromHtml("<font color=\"white\">TOUGH</font>")+"";

//        String[] a = {"EASY", "MEDIUM", "HARD", "TOUGH"};
String [ ] a = {easy,medium,hard,tough};
n.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
n.setDisplayedValues(a);


n.setMaxValue(3);
n.setMinValue(0);
n.setWrapSelectorWheel(true);

d.show();

Я попытался изменить цвет с помощью html, как показано в коде. Я также попытался изменить цвет с помощью getChildAt и преобразовать его в TextView, что привело к сбою приложения.

Цвет текста выбора номера


person A_rmas    schedule 11.11.2015    source источник
comment
Можете ли вы опубликовать свои журналы сбоев, потому что я использую тот же метод, и он работает.   -  person Eric B.    schedule 11.11.2015
comment
Он не разбился, на самом деле запутался с каким-то другим ответом, но ни один из них не работал для меня, завершает блок try, показывает журнал непосредственно перед оператором return, но цвет, похоже, не меняется, используется метод как setNumberPickerTextColor (n, R.color.white );   -  person A_rmas    schedule 11.11.2015
comment
Это связано с тем, что вы не передаете цвет ресурса в этом методе. Вы передаете цвет класса Color. Например, Color.RED   -  person Eric B.    schedule 11.11.2015
comment
Спасибо @eric247, это действительно сработало :D   -  person A_rmas    schedule 11.11.2015
comment
Должен ли я опубликовать это как ответ?   -  person Eric B.    schedule 11.11.2015
comment
да, конечно, я отмечу ваш ответ :) и, пожалуйста, проголосуйте за мой квест: P   -  person A_rmas    schedule 11.11.2015


Ответы (4)


Согласно нашему обсуждению в комментариях, код здесь требует параметр из Color класс. Передайте цвет, используя этот класс.

person Eric B.    schedule 11.11.2015

Просто используйте в файле style.xml атрибут textColorPrimary:

<style name="Theme.MyTheme" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
    <item name="android:textColorPrimary">#FFFFFF</item>

person Sadiq Mamedov    schedule 11.11.2015

скопировано: Изменить цвет текста NumberPicker

Параметр цвета должен быть из класса Color, например Color.WHITE

import java.lang.reflect.Field;

public static boolean setNumberPickerTextColor(NumberPicker numberPicker, int color)
{
    final int count = numberPicker.getChildCount();
    for(int i = 0; i < count; i++){
        View child = numberPicker.getChildAt(i);
        if(child instanceof EditText){
            try{
                Field selectorWheelPaintField = numberPicker.getClass()
                    .getDeclaredField("mSelectorWheelPaint");
                selectorWheelPaintField.setAccessible(true);
                ((Paint)selectorWheelPaintField.get(numberPicker)).setColor(color);
                ((EditText)child).setTextColor(color);
                numberPicker.invalidate();
                return true;
            }
            catch(NoSuchFieldException e){
                Log.w("setNumberPickerTextColor", e);
            }
            catch(IllegalAccessException e){
                Log.w("setNumberPickerTextColor", e);
            }
            catch(IllegalArgumentException e){
                Log.w("setNumberPickerTextColor", e);
            }
        }
    }
    return false;
}
person A_rmas    schedule 11.11.2015

Я использую Котлин:

Просто установите цвет средства выбора номера программно:

numberPicker.textColor = 0xAARRGGBB.toInt()

пример:

numberPicker.textColor = 0xAA3068D8.toInt()
person user8260998    schedule 01.07.2021