了解Android样式的工作原理可能有些混乱。
我将基于一个示例来尝试解释基本工作流程。
假设您想知道按钮的默认背景是什么。这可以是简单的颜色(不太可能),也可以是可绘制对象(有许多不同类型的可绘制对象)。
Android具有主题。主题基本上定义了将哪种样式应用于哪个窗口小部件。因此,我们的第一步是找到默认的Android主题。
你在下面找到它
android-sdkplatformsandroid-15dataresvaluesthemes.xml
在此主题文件中,搜索
button。
您会发现以下内容:
<!-- Button styles --><item name="buttonStyle">@android:style/Widget.Button</item>
这意味着主题将样式
Widget.Button应用于按钮。
好的,现在让我们找到样式
Widget.Button。
文件中定义了所有默认的Android样式
android-sdkplatformsandroid-15dataresvaluesstyles.xml
现在搜寻
Widget.Button
您会发现以下内容:
<style name="Widget.Button"> <item name="android:background">@android:drawable/btn_default</item> <item name="android:focusable">true</item> <item name="android:clickable">true</item> <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> <item name="android:textColor">@android:color/primary_text_light</item> <item name="android:gravity">center_vertical|center_horizontal</item></style>
有趣的行是:
<item name="android:background">@android:drawable/btn_default</item>
这意味着有一个名为
btn_defaultset 的可绘制对象作为按钮背景。
现在,我们需要
btn_default.*在中的一个可绘制文件夹中找到一个名为的文件
android-sdkplatformsandroid-15datares。
这可以是图像(非常不可能)或xml文件(例如)
btn_default.xml。
稍作搜索后,您将找到文件
android-sdkplatformsandroid-15dataresdrawablebtn_default.xml
它包含如下内容:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/btn_default_normal_disable" /> <item android:state_pressed="true" android:drawable="@drawable/btn_default_pressed" /> <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/btn_default_selected" /> <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" /> <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" /> <item android:drawable="@drawable/btn_default_normal_disable" /></selector>
现在,您必须了解这是一个选择器可绘制(许多可绘制类型之一)。该选择器根据按钮状态选择不同的背景。例如,如果按下按钮,则它具有不同的背景。
不,让我们看看默认状态。
<item android:state_enabled="true"android:drawable="@drawable/btn_default_normal" />
它应用了一个称为的可绘制对象
btn_default_normal。
现在我们需要找到该可绘制对象。
同样,我们需要
btn_default_normal.*在中的一个可绘制文件夹中找到一个名为的文件
android-sdkplatformsandroid-15datares。
可以再次是图像或XML文件(例如)
btn_default_normal.xml。
在不同分辨率的不同可绘制文件夹中,您会找到多个名为“ btn_default_normal.9.png”的文件。
:)现在,您知道将
btn_default_normal.9.png其设置为按钮背景。



