Android:Spinner小部件的文本颜色属性隐藏在哪里?

Chr*_*rry 76 android text colors spinner

从下拉列表中选择项目后,我正在尝试更改微调器按钮中显示的单个项目的文本颜色.我一直在Android SDK中浏览themes.xml和styles.xml一小时,我似乎无法找到Spinner从中获取颜色值的位置.

为了澄清,我不是试图改变下拉项的颜色,我试图在没有下拉列表的情况下改变微调器显示文本的颜色.我想你可以称之为微调器的"按钮"文本.

Cas*_*eyB 107

我认为这可能是在styles.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>
Run Code Online (Sandbox Code Playgroud)

- = EDIT = - 这是结果: 在此输入图像描述

以及它是如何完成的:

<?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>
Run Code Online (Sandbox Code Playgroud)

然后将其添加到AndroidManifest.xml中的应用程序标记中

android:theme="@style/MooTheme"
Run Code Online (Sandbox Code Playgroud)


Blu*_*ell 51

是的凯西B是对的.

这是我设置微调文本颜色的方法,一个简单的例子:

styles.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>
Run Code Online (Sandbox Code Playgroud)

然后在你的清单中:

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" >
Run Code Online (Sandbox Code Playgroud)

所有微调器外部的文本现在为绿色,下拉列表中的文本将为红色.


saa*_*aad 28

我用另一种简单的技术做到了这一点

从Android res/layout文件夹中复制simple_spinner_item.xml和simple_spinner_dropdown_item.xml,并将它们复制到项目中.

然后修改以下行

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);
Run Code Online (Sandbox Code Playgroud)

如:

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);
Run Code Online (Sandbox Code Playgroud)

其余的很简单,您现在可以编辑simple_spinner_item.xml来编辑微调器窗口小部件上一个可见项的外观,并编辑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" />
Run Code Online (Sandbox Code Playgroud)

而我的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" />
Run Code Online (Sandbox Code Playgroud)

而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" />
Run Code Online (Sandbox Code Playgroud)

  • 很好的例子.我无法让其他人在我的项目中工作,但这很容易,就像一个魅力. (3认同)
  • 这也是一种解决方案,不像其他人那样强制全球新风格. (2认同)

Ruk*_*ias 26

你可以在Spinner对象上使用setOnItemSelectedListener,

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这是这里最简单的方法:) (2认同)

Pre*_*ker 11

其实非常简单.我一直在寻找你需要创建样式并设置微调器

首先在Style.xml中创建主题

 <style name="spinnerTheme" parent="android:Theme">
    <item name="android:textColor">@color/gray_dark</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后在你设置你的微调器的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"/>
Run Code Online (Sandbox Code Playgroud)

享受编码