为什么android:buttonStyle没有样式按钮?

时间:2015-11-17 03:00:22

标签: android android-theme android-styles

所以,我有这个奇怪的问题:我的应用程序非常简单,主要活动只有一个按钮,清单中设置的活动的自定义主题。

我可以确认主题是否正常并被选中,因为我可以更改活动背景或字体颜色,例如。

但是当我尝试在我的活动上设置所有按钮的样式时,它不起作用!

这是我使用的 styles.xml 代码:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:background">#0f0</item>
        <item name="android:buttonStyle">@style/btxs</item>
    </style>

    <style name="btxs" parent="@android:style/Widget.Button">
        <item name="android:textColor">#f00</item>
    </style>

</resources>

活动背景为绿色(主题有效),但按钮仍为默认值。

android:buttonStyle在主题中设置按钮样式的正确方法是什么?

供参考我也粘贴 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_below="@+id/textView"
        android:layout_toEndOf="@+id/textView"
        android:layout_marginTop="25dp" />
</RelativeLayout>

1 个答案:

答案 0 :(得分:6)

AppCompatActivity将使用buttonStyle。我还假设您可能希望扩展Base.Widget.AppCompat.Button

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:background">#0f0</item>
        <item name="buttonStyle">@style/btxs</item>
    </style>

    <style name="btxs" parent="Base.Widget.AppCompat.Button">
        <item name="android:textColor">#f00</item>
    </style>

</resources>