我正在爲我們的Android應用程序創建一個默認主題,以指定應用於整個應用程序的默認自定義主題。這個想法是我們不應該在佈局中指定外觀相關的屬性,他們應該通過將自定義主題應用到整個應用程序來自動注入。如何定義自定義應用程序主題以指定Android中佈局的默認背景?
我可以通過覆蓋它們的樣式來爲UI小部件(如TextView
和EditText
)執行此操作。 例如覆蓋android:textViewStyle
和android:buttonStyle
等 如何對佈局(LinearLayout
或RelativeLayout
或RelativeLayout
等)執行相同操作,以便我可以指定佈局的默認背景?
在Android清單中的應用元件看起來像這樣:
....
<application android:icon="@drawable/ic_launcher" android:label="@string/app_title" android:allowBackup="false"
android:theme="@style/Theme.MyCustomTheme" android:name="MyAppClass">
Theme.MyCustomTheme看起來像這樣:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.MyCustomTheme" parent="Theme.AppCompat">
<item name="android:textViewStyle">@style/my_custom_text_view_style</item>
<item name="android:editTextStyle">@style/my_custom_edit_text_style</item>
<item name="android:buttonStyle">@style/my_custom_button_style</item>
<item name="android:listViewStyle">@style/my_custom_list_style</item>
上述繼承自定義樣式從相應的機器人的基本樣式。
我尋找合適的機器人屬性使用上面覆蓋的佈局風格,這樣我可以申請我的自定義默認背景給每一個佈局(LinearLayout
或RelativeLayout
等)宣佈在佈局xml
文件,而無需在佈局xml中明確指定它。我試圖覆蓋android:colorBackground
但這沒有任何區別。我試圖覆蓋android:windowBackground
,但也改變了操作欄的顏色。請注意,我正在使用appcompat支持庫中的appcompat
主題。
感謝回覆。重寫android:background會改變每個UI元素的背景,而不僅僅是佈局。我已經嘗試過並且弄亂了整個用戶界面。如果您看到我的自定義樣式,它們會覆蓋適用於特定元素的樣式。我想爲線性,相對佈局等做同樣的事情,但不知道如何重寫適用於佈局的樣式(從ViewGroup繼承的UI佈局)。 – user3465654
@ user3465654我更新了我的答案,恐怕你不能擁有你想要的 – kiruwka
重寫android:background對我來說不是解決方案。這個想法本身是爲每個佈局注入背景,而不必爲每個佈局明確指定它。我會繼續研究如何做到這一點。 – user3465654