0

你能帮我理解我对 Android 风格和主题的概念吗?

这是我的问题:我希望我的按钮根据以下属性运行:style="?android:attr/buttonStyleSmall"

在这种情况下,按钮如下所示:这就是我想要的

因为我的背景是黑色的,我觉得我的按钮上有一个白色的字体颜色来获得更好的对比度。然后我决定在我的 styles.xml 文件中创建一个元素来覆盖buttonStyleSmall样式并添加这种白色字体,以及一些其他更改:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="MyTheme" parent="android:Theme.Holo.Light">
        <item name="android:buttonStyle">@style/ButtonText</item>
    </style>

    <style name="ButtonText" parent="@android:attr/buttonStyleSmall">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">match_parent</item>
        <item name="android:textColor">#ffffff</item>
        <item name="android:gravity">center</item>
        <item name="android:paddingLeft">20dp</item>
        <item name="android:paddingRight">20dp</item>
        <item name="android:paddingTop">10dp</item>
        <item name="android:paddingBottom">10dp</item>
        <item name="android:textSize">14sp</item>
        <item name="android:textStyle">bold</item>
    </style>

</resources>

现在,我创建了一个名为的主题MyTheme,我计划将其应用于我的整个应用程序。这样我就不必在每次创建按钮时都声明按钮的样式。所以我只会有这样的按钮声明:

<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

不幸的是,当我这样做时,这是我拥有的按钮:作风不好

发生了什么?我确实在我的样式中声明了父属性,那么为什么按钮中的灰色框消失了?它也不像一个按钮(即:当我点击它时,它不会改变颜色)。如果我这样声明按钮:

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/ButtonText"
        android:text="Button" />

同样的问题也会发生。

我究竟做错了什么?

谢谢大家, 费利佩

4

1 回答 1

1

我相信你想继承自@android:style/Widget.Button.Small.

这将父级指向实际的 XML 样式定义,而@android:attr/buttonStyleSmall指向 buttonStyleSmall 的属性而不是样式本身。

于 2013-04-30T18:50:47.483 回答