Android:где скрывается атрибут цвета текста виджета Spinner?



Я пытаюсь изменить цвет текста одного элемента, который отображается в кнопке spinner после выбора элемента из выпадающего списка. Я внимательно изучал темы.XML и стили.xml в Android SDK уже час, и я не могу найти, где прядильщик получает значение цвета.



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

927   7  

7 ответов:

Я думаю, что это, вероятно, этот бит в стилях.xml

<style name="Widget.TextView.SpinnerItem">
    <item name="android:textAppearance">@style/TextAppearance.Widget.TextView.SpinnerItem</item>
</style>
<style name="Widget.DropDownItem.Spinner">
    <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item>
</style>

- = EDIT =- Вот результат: enter image description here

и вот как это делается:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MooTheme" parent="android:Theme">
        <item name="android:spinnerItemStyle">@style/MooSpinnerItem</item>
    </style>

    <style name="MooSpinnerItem" parent="android:Widget.TextView.SpinnerItem">
        <item name="android:textAppearance">@style/MooTextAppearanceSpinnerItem</item>
    </style>

    <style name="MooTextAppearanceSpinnerItem" parent="android:TextAppearance.Widget.TextView.SpinnerItem">
        <item name="android:textColor">#F00</item>
    </style>
</resources>

затем просто добавьте это в тег приложения в вашем AndroidManifest.xml

android:theme="@style/MooTheme"

да, Кейсиб прав.

вот как я установил цвет текста spinner, немного простой пример:

стили.XML

    <style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar">
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item>
    </style>

    <style name="SpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
        <item name="android:textColor">#00FF00</item>
    </style>

    <style name="SpinnerItem.DropDownItem" parent="@android:style/Widget.DropDownItem.Spinner">
        <item name="android:textColor">#FF0000</item>
    </style>

</resources>

тогда в вашем манифесте:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" >

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

Я сделал это с помощью другой простой техники,

скопируйте simple_spinner_item.xml и simple_spinner_dropdown_item.xml из папки Android res / layout и скопируйте их в свой проект.

затем измените следующие строки

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, Android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
spinnerSubject.setAdapter(adapter);

как:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
spinnerSubject.setAdapter(adapter);

остальное легко, теперь вы можете редактировать simple_spinner_item.xml для редактирования внешнего вида одного видимого элемента в виджете spinner и редактирования simple_spinner_dropdown_item.XML, чтобы изменить внешний вид выпадающего списка.

например, мой макет активности содержит:

<Spinner
android:id="@+id/mo_spinnerSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:background="@drawable/spinnerset_background" />

и мой simple_spinner_item.XML теперь содержит:

<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:singleLine="true"
android:textColor="@color/custom_white"
android:textSize="16sp" />

и simple_spinner_dropdown_item.xml выглядит так:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@color/custom_black"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="@color/custom_white" />

вы можете использовать setOnItemSelectedListener на объекте Spinner,

spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        ((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249));
        // OR ((TextView)parentView.getChildAt(0)).setTextColor(Color.RED);
    }
});

его очень просто. Я искал по всему вам просто нужно создать стиль и установить на spinner

сначала создайте свою тему в стиль.xml

 <style name="spinnerTheme" parent="android:Theme">
    <item name="android:textColor">@color/gray_dark</item>
</style>

затем в вашем xml, где вы установили свой счетчик, добавьте это:

android: theme= " @style / spinnerTheme"

                       <Spinner
                        android:id="@+id/spinner"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:padding="10dp"
                        android:paddingBottom="5dp"
                        android:paddingLeft="10dp"
                        android:layout_span="3"
                        android:layout_weight="1.3"
                        android:theme="@style/spinnerTheme"
                        android:textSize="12sp"
                        android:spinnerMode="dialog"
                        android:clickable="false"/>

Наслаждайтесь Кодирования

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

Это будет включать в себя изменение метода ondraw (), и вы нарисуете счетчик, как вы хотели бы, чтобы он выглядел.

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

источник: http://developer.android.com/reference/android/widget/Spinner.html

Это может помочь:

http://www.designerandroid.com/?p=28

это сработало для меня создать свой собственный файл макета с пользовательским определением элемента блесны.

custom_spinner.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/txt_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#ffffff" />

измените элемент spinner с помощью адаптера

Spinner spinner= (Spinner) findViewById(R.id.spinner1);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner);
spinner.setAdapter(adapter);

Comments

    Ничего не найдено.