是的,所以你需要做更多的阅读。
让我们从基础开始,
您需要了解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
查看我的回答 –