1

我試圖改變微調的外觀,我部分成功。我通過壓倒主題的部分來做到這一點。我設法與我的themes.xml和styles.xml改變微調項的文本大小(即在下拉按鈕上的文本大小):Android風格說明

我的themes.xml文件看起來像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="CustomTheme" parent="@android:Theme.Holo.Light"> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:spinnerItemStyle">@style/CustomSpinnerItem</item> 
</style> 
</resources> 

我styles.xml文件看起來像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<style name="CustomSpinnerItem" parent="@android:Widget.TextView.SpinnerItem"> 
    <item name="android:textAppearance">@style/CustomTextAppearance</item> 
</style> 
<style name="CustomTextAppearance"> 
    <item name="android:textSize">30dp</item> 
</style> 

</resources> 

但是我無法找到負責在微調的下拉列表中的項目的文本外觀屬性。我試過dropDownItemStyle等等。在我看來,屬性名稱並不是不言自明的,所以我想知道是否有什麼屬性會在樣式中找到哪些屬性來覆蓋哪些屬性的文檔。我發現通過platfrom的themes.xml和styles.xml追溯主題中使用的所有樣式非常麻煩,然後嘗試通過試驗和錯誤來找到正確的屬性。我知道人們可以通過將佈局傳遞給適配器來改變外觀,但是,這並不是我所期待的,因爲(據我所知),只能在樣式中使用繼承,而不能在佈局xml文件。如果我爲適配器創建了一個自定義佈局,那麼我將不得不創建9個補丁的圖像等,如果我只想更改文本大小,我認爲這太耗時。

當然,這可能是我誤解了整體概念,因爲我是新來的Android;)

+0

+1和良好通過問題想。 – coder

+0

沒有人有線索嗎? – Schnodahipfe

回答

1

你可能已經找到了答案,因爲你問,但對於其他人尋找類似的問題:

我不知道跟他們做什麼好解釋的屬性名稱的列表(R.attr的頁面大多給出了已經在名稱信息),但我做的事情是這樣的:

  • 從開始元素我給setDropDownViewResour ce(),在我的情況下:android.R.layout.simple_spinner_dropdown_item並找到。

  • 在\ sdk \ platforms \ android-17(特定平臺版本以避免多餘結果)中找到其佈局定義。

  • 從佈局文件中獲取其樣式。在這種情況下:?android:attr/spinnerDropDownItemStyle

我們現在有我們需要的屬性名稱。

最好這樣做,而不是嘗試猜測要使用的屬性,因爲您知道系統本身使用哪個屬性,所以它很可能是正確的(除非有錯誤)。

如果我創建了適配器的自定義佈局我不得不創建 9補丁圖像等

哦,不,佈局決定了你將有什麼樣的GUI元素(一個文本框,一個微調框,一個圖像按鈕,一個自定義元素......),而不是它們的樣式(九拼塊背景,文本顏色......),所以您仍然必須混淆樣式以獲得正確的外觀。

例如,爲了視覺一致性,我將Theme.Holo中的button,checkbox和spinner樣式移植到Gingerbread,但我沒有弄亂佈局,我所做的只是前面提到的步驟以及查找結果(spinnerDropDownItemStyle在上面的例子中)在themes.xml中,它給了我樣式名稱(例如:Widget.Holo.DropDownItem.Spinner)。

然後我看着在styles.xml起來,在我的項目的styles.xml進口它(和任何母公司*),搜索和複製在我的項目的任何具體河洛參考,並相應地調整命名空間(增加android:到屬性並替換?android:attr@style爲我複製到我的styles.xml文件)。

到目前爲止,我還沒有惹過佈局(即使薑餅上的微調對話框中的單選按鈕的存在是由xml屬性確定的:android:checkMark)。

  • 如果樣式沒有父屬性(如Widget.Holo.DropDownItem.Spinner),那麼它的母公司是相同的風格減去好格式的最後一個元素(例如:Widget.Holo.DropDownItem