我在我的佈局xml文件中創建了一個微調器,併爲此微調器設置了一個字符串數組。 如果我更改微調器的文本樣式,文本不會受到更改的影響。如何更改微調器的文本樣式?
我在googlegroups上看到spinner沒有文字,因此textstyle無法更改,我必須更改顯示在spinner中的textview樣式。但我該怎麼做。最好在我的xml文件中。
我在我的佈局xml文件中創建了一個微調器,併爲此微調器設置了一個字符串數組。 如果我更改微調器的文本樣式,文本不會受到更改的影響。如何更改微調器的文本樣式?
我在googlegroups上看到spinner沒有文字,因此textstyle無法更改,我必須更改顯示在spinner中的textview樣式。但我該怎麼做。最好在我的xml文件中。
當您創建支持微調器的適配器時,您可以爲微調器項目設置佈局。
spinner.setAdapter(new ArrayAdapter(this, R.id.some_text_view));
你可以按照你想要的樣式來設置some_text_view。
<TextView android:id="@+id/some_text_view" android:textStyle="bold" />
正如我的前任指定的那樣,您不能在Spinner組件所在的主XML佈局文件中執行此操作。
上面的答案很好,但是如果我們想要使用Google的最佳實踐,就像您知道的那樣......對所有內容使用樣式......您可以通過以下3個「簡單」步驟進行操作:
第1步:你需要你的佈局文件夾下的一個額外的文件與外觀的Spinner的項目:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/textViewSpinnerItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/SpinnerTextViewItem"
xmlns:android="http://schemas.android.com/apk/res/android" />
名稱此文件:spinner_item_text.xml
第2步:然後,當你有一個項目數組填充微調您的活動課:
adapter = new ArrayAdapter<CharSequence>(this, R.layout.spinner_item_text, items);
spinner.setAdapter(adapter);
注意,R.layout.spinner_item_text資源是你自己的研發的文件。
第3步:在您的values文件夾下,創建或使用(您可能已有一個)文件styles.xml。需要的樣式應該看起來像這樣:
<style name="SpinnerTextViewItem" parent="@android:style/Widget.TextView" >
<item name="android:textSize" >8dp</item>
<item name="android:textStyle" >bold</item>
</style>
就是這樣!
到目前爲止,它已經非常方便地將所有關於文本大小,樣式,顏色等等放在styles.xml文件中,因此很容易維護。
向SpinnerTextViewItem添加'
不錯的實現,但實際上你可以用XML來完成。請參閱@Cyril REAL的答案:http://stackoverflow.com/a/8871505/293280 – 2014-01-16 22:00:17
如果我只想對頂層元素進行操作,該怎麼辦? – 2015-03-16 05:10:02
實際上,您可以通過xml自定義微調器的文本。
在你自己的風格,定義:
<item name="android:spinnerItemStyle">@style/yourStyleForSpinnerItem</item>
,也定義了這種風格:
<style name="yourStyleForSpinnerItem">
//stuff you want for the item style
</style>
當你在Java代碼中實例化微調的適配器,你可以使用默認的Android。 R.layout。simple_spinner_item
這適用於我,並且比通過代碼而不是xml定義所有適配器要容易得多。 – 2013-04-17 08:36:07
你能解釋一下嗎? 「物品」應該定義在哪裏?我可以在哪裏設置微調器的風格? – Adreamus 2013-04-25 19:28:08
android:spinnerItemStyle是主題的屬性。此屬性是對微調項目樣式的引用。因此,如果您將此項目放到您用於應用程序的自定義主題中,它將被使用。主題是一種典型的存儲themes.xml作爲一些默認的Android主題的後裔的風格。要了解更多信息,請點擊此處:http://developer.android.com/guide/topics/ui/themes.html – Bhiefer 2013-04-26 10:01:26
作爲後續@Cyril REAL的出色答卷,這裏是一個徹底的執行如何做到通過XML風格你紗廠如果您是通過填充你的微調android:entries
。
上述答案的工作,如果你通過代碼創建微調但如果你通過XML,即使用android:entries
設置你的微調項,那麼你就可以調整文字大小和其他屬性與以下兩個主題設置:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppBaseTheme" parent="android:Theme.Holo">
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- For the resting Spinner style -->
<item name="android:spinnerItemStyle">
@style/spinnerItemStyle
</item>
<!-- For each individual Spinner list item once clicked on -->
<item name="android:spinnerDropDownItemStyle">
@style/spinnerDropDownItemStyle
</item>
</style>
<style name="spinnerItemStyle">
<item name="android:padding">10dp</item>
<item name="android:textSize">20sp</item>
<item name="android:textColor">#FFFFFF</item>
</style>
<style name="spinnerDropDownItemStyle">
<item name="android:padding">20dp</item>
<item name="android:textSize">30sp</item>
<item name="android:textColor">#FFFFFF</item>
</style>
</resources>
對於AppCompat主題,只需刪除'android:'像這樣'
如果你不希望這樣的解決方法,有一個簡單的方法。您可以通過微調TextView的並改變其參數:
TextView tv = (TextView) spin.getSelectedView();
tv.setTypeface(Typeface.DEFAULT_BOLD); //to make text bold
tv.setTypeface(Typeface.DEFAULT); //to make text normal
如果你只想改變的微調彈出觀的背景下,調用這個方法:
spinner.setPopupBackgroundResource(R.color.pa_md_white);
並沒有可能性內做到這一點xml文件?如果我在xml中設置項目,我不需要自己設置ArrayAdapter ... – Janusz 2010-07-08 15:48:53
如果您使用android:entries,那麼在內部它會創建一個ArrayAdapter,其中包含android.R.layout.simple_spinner_item作爲佈局,並且您不能更改該佈局,因爲它是android的內部。 – 2010-07-08 16:02:11