安卓 - 默认按钮样式

2022-08-31 21:06:38

问题:在哪里可以找到带有十六进制颜色代码的默认样式 xml?

我正在寻找样式“buttonStyle”和其他默认样式女巫影响方面,如TextViews,Buttons等(如果你不改变方面的样式)

我抬头看了看,但我实际上并没有找到我想要的东西。<instalation_folder>\android-sdk\platforms\android-<versio>\data\res\values<instalation_folder>\android-sdk\platforms\android-<version>\data\res\colors

希望我的问题是清楚的。


由于声誉不佳,我还不能回答这个问题。这是答案

通过一些谷歌搜索,我发现“buttonStyle”实际上是“Widget.Button” - 用默认值设置Android样式

这是它的工作原理:

  • 正如我所说,'buttonStyle'样式是Accern的'Widget.Button'样式,在.背景设置为:\android-sdk\platforms\android-<version>\data\res\values\styles.xml@android:drawable/btn_default
  • \android-sdk\platforms\android-<version>\data\res\drawable\btn_default.xml将按钮的背景色定义为选择器。颜色实际上取决于按钮的状态。默认颜色设置为@drawable/btn_default_normal
  • 通过一些搜索,我发现,btn_default_normal是png图像位于\android-sdk\platforms\android-<version>\data\res\drawable-mdpi

我发现它有点令人困惑,但我希望它能帮助某人,也许......


答案 1

了解Android风格的工作原理可能会有点混乱。

我将尝试根据一个示例解释基本工作流程。

假设您想知道按钮的默认背景是什么。这可以是简单的颜色(不太可能)或可绘制的(有许多不同类型的可绘制对象)。

安卓有主题。主题基本上定义了将哪种样式应用于哪个小部件。因此,我们的第一步是找到默认的Android主题。

您可以在下找到它android-sdk\platforms\android-15\data\res\values\themes.xml

在此主题文件中,搜索 .button

你会发现这样的东西:

<!-- Button styles -->

<item name="buttonStyle">@android:style/Widget.Button</item>

这意味着主题将样式应用于按钮。Widget.Button

好吧,现在让我们找到样式。Widget.Button

所有默认的安卓风格都在文件中定义android-sdk\platforms\android-15\data\res\values\styles.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_default

现在我们需要在 下的可绘制文件夹中找到一个名为的文件。btn_default.*android-sdk\platforms\android-15\data\res

这可以是图像(非常不可能),也可以是 xml 文件,如 .btn_default.xml

经过一点点搜索,你会发现该文件android-sdk\platforms\android-15\data\res\drawable\btn_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-sdk\platforms\android-15\data\res

这可以是图像或 xml 文件,如 .btn_default_normal.xml

您将在不同的可绘制文件夹中找到多个名为“btn_default_normal.9.png”的文件,用于不同的分辨率。

:)现在您知道它被设置为按钮背景。btn_default_normal.9.png


答案 2

当您在 XML 中声明时,您可以找到 Android 小部件的默认样式:

style="@android:style/Widget.Button" - standard Button
style="@android:style/Widget.TextView" - standard TextView

例如,这是默认按钮的样式:

    <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>

默认按钮的背景:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true" android:state_window_focused="false"/>
    <item android:drawable="@drawable/btn_default_normal_disable" android:state_enabled="false" android:state_window_focused="false"/>
    <item android:drawable="@drawable/btn_default_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_default_selected" android:state_enabled="true" android:state_focused="true"/>
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true"/>
    <item android:drawable="@drawable/btn_default_normal_disable_focused" android:state_focused="true"/>
    <item android:drawable="@drawable/btn_default_normal_disable"/>
</selector> 

您可以在任何图形编辑器的帮助下获得默认颜色:默认按钮NinePatch的路径。\android-sdk\platforms\android-13\data\res\drawable-hdpi


推荐