java - Android - 默认按钮样式

标签 java android button styles

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

我正在寻找 Style 'buttonStyle' 和其他影响 TextView、Button 等方面的默认样式(如果您不更改方面的样式)

我在 <instalation_folder>\android-sdk\platforms\android-<versio>\data\res\values 中查找和 <instalation_folder>\android-sdk\platforms\android-<version>\data\res\colors但我实际上并没有找到我要找的东西。

希望我的问题很清楚。


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

回答

通过谷歌搜索,我发现 'buttonStyle' 实际上是 'Widget.Button' - Styling Android With Defaults

这就是它的工作原理:

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

我觉得这有点令人困惑,但我希望它对某人有所帮助,也许......

最佳答案

了解 Android 样式的工作原理可能有点困惑。

我将尝试通过一个示例来解释基本的工作流程。

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

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 样式都在文件 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 下的一个可绘制文件夹中.

这可以是图像(不太可能)或像 btn_default.xml 这样的 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设置为按钮背景。

关于java - Android - 默认按钮样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13222858/

相关文章:

html - 混淆了 html 中类的语法分配

django - 按钮同时充当 "submit"和 "href"

android - 如何为按钮选择器设置不同的主题?

java - 仅在输入为单个字母时运行程序

android - 展开/折叠 Lollipop 工具栏动画(电报应用程序)

java - jar 中提供什么格式的大背景图像?

android - Phonegap - Android 后退按钮 - 如何捕捉按住事件

android - 如何在 Android SDK 的 eclipse 中关闭@string 资源的警告

JavaFX 按钮垃圾邮件 MouseExit 和 MouseEntered

java - Linux 和 Mac 上的免费 Java native 启动器