我試圖從下拉列表中選擇一個項目後,更改顯示在微調按鈕中的單個項目的文本顏色。我一直在仔細閱讀Android SDK中的themes.xml和styles.xml一個小時,我似乎無法找到Spinner從哪裏獲取顏色值。Android:Spinner窗口小部件的文本顏色屬性隱藏在哪裏?
爲了澄清,我沒有試圖更改下拉項目的顏色,我試圖在沒有下拉菜單時更改微調器顯示文本的顏色。我想你可以稱它爲微調器的'按鈕'文本。
我試圖從下拉列表中選擇一個項目後,更改顯示在微調按鈕中的單個項目的文本顏色。我一直在仔細閱讀Android SDK中的themes.xml和styles.xml一個小時,我似乎無法找到Spinner從哪裏獲取顏色值。Android:Spinner窗口小部件的文本顏色屬性隱藏在哪裏?
爲了澄清,我沒有試圖更改下拉項目的顏色,我試圖在沒有下拉菜單時更改微調器顯示文本的顏色。我想你可以稱它爲微調器的'按鈕'文本。
我認爲它可能是該位在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>
- =編輯= - 這裏的結果:
,這裏是它是如何做:
<?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"
這適用於下拉菜單中的微調項目。我需要它用於實際微調器中的文本。 – 2011-05-28 02:06:45
這是實際的微調。我正在編輯我的答案,全面實施。 – CaseyB 2011-05-28 02:23:23
我不明白,因爲這表示它是針對微調項目的。它如何應用於微調?我發現它確實有用,所以我會將你的標記作爲答案,但我真的很好奇它是如何實際工作的,因爲我正在查看Spinner代碼以查看文本顯示的位置,並且位於找不到它。 – 2011-05-28 02:30:31
我不認爲有與文本相關的顏色。它最有可能在android代碼中預定義,如果你想改變微調器的顏色,可能只需要自己製作。
這將包括更改ondraw()方法,並繪製微調器如何讓它看起來。
我認爲唯一可能的是潛在解決這個問題是微調框的樣式屬性。
來源:http://developer.android.com/reference/android/widget/Spinner.html
這可能幫助:
那麼,我認爲它是在某種風格的原因是因爲當我從全息變爲全息.Light主題時,旋轉器上的文本顏色從白色變爲黑色。 – 2011-05-28 01:36:37
那麼你可以定義自己的風格,然後將其應用於微調,對吧? – JoxTraex 2011-05-28 01:38:06
我可以,但我不知道爲文本顏色重寫什麼屬性,因此我的問題。 – 2011-05-28 01:49:07
您可以微調對象使用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);
}
});
這是這裏最簡單的方法:) – 2013-03-07 02:24:21
我發現我必須檢查,父母有孩子第一,否則有一個NullPointerException引發每當我改變設備的方向。 – 2014-08-13 08:34:37
如果只爲這一個微調器設置顏色,而不是全局設置,這可能是最佳解決方案 – bkurzius 2015-03-02 22:06:15
是的,CaseyB是正確的。
下面是如何設置的微調文字的顏色,一點簡單的例子:在你的清單
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>
然後:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.NoTitleBar.WithColoredSpinners" >
在外面的文本你所有的紡紗廠現在都是綠色的,下拉菜單上的文字會變成紅色。
Thamk's dude ....它對我來說是完美的工作........ – Kalpesh 2012-04-19 05:52:01
對於AppCompat主題只是刪除'android:'像這樣'
我這樣做是使用另一種簡單的技術,
副本在Android RES /佈局文件夾中的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);
爲:
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編輯一個可見項目的appearence微調器插件,然後編輯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" />
不錯的例子。我無法讓其他人在我的項目中工作,但這很容易,並且像魅力一樣工作。 – raider33 2013-10-29 02:11:57
這也是一個解決方案,不像其他人那樣強制全新的風格。 – 2015-02-02 12:02:59
這對我有用 c使用微調項目的自定義定義自己的佈局文件。
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) findViewById(R.id.spinner1);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.by_loc_array,R.layout.txt_spinner);
spinner.setAdapter(adapter);
它非常簡單實際的微調項。我一直在尋找各地你只需要創建的風格和微調器設置
在首先創建主題Style.xml
<style name="spinnerTheme" parent="android:Theme">
<item name="android:textColor">@color/gray_dark</item>
</style>
然後在你的XML您設置您的微調添加此:
機器人:主題= 「@風格/ 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"/>
享用編碼
謝謝大家的贊成票。 :) – 2017-11-06 12:59:04
優秀!我使用了@android:color/holo_orange_light – pollaris 2018-01-27 00:24:09
有一個顏色和背景的文本在微調。你可以在SpinnerAdapter.getView()中設置它。 – 2012-03-03 00:47:53