是的,所以你需要做更多的閱讀。
讓我們從基礎開始,
您需要了解differente betweent的屬性,樣式和主題。
安屬性是可以風格的東西。例如:android:textSize
是一個可以具有任何值的屬性。
A 風格是一組特定的屬性將被應用於一個小工具。他們在你/values/styles.xml
定義 例如:可應用於
<style name="normalTextThin" parent="android:Widget.Holo.Light.TextView">
<item name="android:gravity">left|center_vertical</item>
<item name="android:padding">8dp</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:textSize">16sp</item>
</style>
的風格既可以作爲主題的一部分,或者直接作爲主題無關。
一個小部件的主題indepentent造型是這樣的:
<TextView
android:id="@+id/text"
style="@style/normalTextThin"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
你那麼主題化只一個TextView的。
一個主題是樣式,可以應用到你的用戶界面,這樣的整體活動,或者你的整個應用程序的一部分的集合。
例如:
<style name="AppTheme" parent="android:Theme.Light">
<item name="android:editTextStyle">@style/EditTextAppTheme</item>
<item name="android:buttonStyle">@style/ButtonAppTheme</item>
<item name="android:imageButtonStyle">@style/ImageButtonAppTheme</item>
</style>
在這裏,我們宣佈所有的EditText在您的應用程序將使用風格命名爲EditTextAppTheme
,等而上。如果這樣做了,才能真正有主題是積極的,你在清單中聲明它:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
這意味着,你不需要申報風格每個插件創建。
<EditText
android:id="@+id/input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_search">
<requestFocus />
</EditText>
該小工具在那裏將已經使用EditTextAppTheme
,而不需要你明確的聲明如此稱呼。
我建議您嘗試閱讀可以設置樣式的屬性,如何設置樣式等等。
如果你不想雖然,這很好,你仍然可以得到使用以下工具做了造型很多:
希望有幫助。
附加信息
讓我澄清一下對整個?attr/attributeName
的?
意味着該系統將選擇當前配置(不具體到不同的主題)的具體attributeName
值。只有當您希望在不同配置下的值有所不同時,才應使用此選項。例如:
?android:attr/actionBarSize
這條線是一個尺寸,並且它不會基於當前主題是不同的,但是就目前設備屏幕大小和方向(值,值土地,值-sw600dp)。
重要的是要知道,指定?android:
意味着您正在訪問預設的Android值,而不是您的。如果您擁有或想要創建和使用您自己的屬性值的具體配置,必須做到以下幾點:
創建你的/價值/文件夾命名爲attrs.xml
文件。
聲明所需的自定義屬性:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<attr name="my_custom_attr" format="reference" />
</resources>
聲明一個值自定義屬性,讓我們對自己的主題說。
<style name="AppTheme" parent="android:Theme.Light">
<item name="my_custom_attr">@resource_type/resource_name</item>
<item name="android:editTextStyle">@style/EditTextAppTheme</item>
<item name="android:buttonStyle">@style/ButtonAppTheme</item>
<item name="android:imageButtonStyle">@style/ImageButtonAppTheme</item>
</style>
然後你就可以使用它了Widget您想:
。希望清除的東西出來。
EDIT 2
爲了更好地回答你的問題,請更新您的問題。就像我說的,閱讀更多關於如何正確創建樣式。
- 名爲'one'的主題,你想要應用到什麼?一個活動,一個小工具,整個應用程序?
- 你是如何應用這個主題的?顯示指定主題'one'用法的代碼行。
您指定的主題根本不是一個正確構建的主題/風格。
<style name='one'>
<item name='android:textColor'>#eea</item>
<item name='android:textSize'>20sp</item>
</style>
這說的絕對沒有,它絕對不適合活動級別的主題。您指定父母的原因是,您的主題可以從父級繼承所有屬性,然後指定要更改的屬性。
舉例來說,如果你想用你的主題和背景爲淺色,這樣做:
<style name='one' parent="android:Theme.Holo.Light>
<item name='android:textColor'>#eea</item>
<item name='android:textSize'>20sp</item>
</style>
但即便如此,儘管它會適用,你不希望有相同文字的顏色和大小爲整個應用程序嗎?這是無稽之談,不同的文本顏色和大小佔用戶體驗的很大一部分,所以我們可以創建子列並將它們應用於特定的小部件,而不是從我們可以稱爲「風格」的那些值中設置這些值。
我不能再詳細說明我已經有了什麼,上面解釋瞭如何完成特定於Widget的樣式,以及活動/應用程序級別主題。
要獲得完整的啓動指南,請閱讀Android Developer Site,嘗試在那裏聲明的測試樣式,看看它們是如何工作的,然後嘗試創建自己的測試樣式,如果沒有閱讀,請不要嘗試創建任何東西已經制定。
正在應用的主題是什麼? –
其中一個如上定義 – tejinder
查看我的回答 –