3

不起作用,因为没有buttonStyle项目名称。它只有button.

我的例子:

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

    <style name="AppTheme" parent="@android:style/Theme.Black">
        <item name="android:button">@style/ThemeButton</item>
    </style>

    <style name="ThemeButton" parent="@android:style/Widget.Button">
        <item name="android:background">@drawable/button</item>
    </style>

</resources>

但这也不起作用。

4

1 回答 1

6

当为不同的 API 级别使用不同的主题时,我会覆盖每个主题的按钮样式。考虑以下示例。

API 14+ 的应用程序主题是派生自android:Theme.Holo.Light.DarkActionBar.

<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- API 14 theme customizations can go here. -->
</style>

android:Theme.Holo.Light.DarkActionBar没有自己的buttonStyle,但它的父母Theme.Holo.Light有。按钮样式如下:

<item name="buttonStyle">@style/Widget.Holo.Light.Button</item>

但是您的应用程序的 API 21 主题源自android:Theme.Material.Light.DarkActionBar

<style name="AppBaseTheme" parent="android:Theme.Material.Light.DarkActionBar">
    <!-- API 21 theme customizations can go here. -->
</style>

的按钮样式android:Theme.Material.Light如下:

<item name="buttonStyle">@style/Widget.Material.Light.Button</item>

Widget.ButtonWidget.Holo.Light.ButtonWidget.Material.Light.Button我上面提到的祖父。因此,如果您从Widget.Button应用程序中派生,您将失去 Google 工程师为Widget.Material.Light.ButtonWidget.Holo.Light.Button.

我记录了一些例子来证明这一点。

安卓按钮样式。所有 API 级别的 Widget.Button。

所有 API 级别的老式按钮 http://youtu.be/hKWUFgvw-Gs

文件夹值中的 styles.xml如下所示:

<style name="AppBaseTheme" parent="android:Theme.Light">
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">

    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:buttonStyle">@style/Button</item>
</style>

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

每个按钮样式都源自其主题的按钮样式。

该按钮具有材质动画http://youtu.be/8Wp1TWjjha0

文件夹values-v21中的 styles.xml如下所示:

<resources>

    <style name="AppBaseTheme" parent="android:Theme.Material.Light.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
    </style>

    <style name="BaseButton" parent="@android:style/Widget.Material.Light.Button"></style>

</resources>

文件夹values-v14中的 styles.xml如下所示:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    </style>

    <style name="BaseButton" parent="@android:style/Widget.Holo.Light.Button"></style>

</resources>

文件夹值中的 styles.xml如下所示:

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

    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:buttonStyle">@style/Button</item>
    </style>

    <style name="Button" parent="@style/BaseButton">
        <item name="android:text">Lorem Ipsum</item>
    </style>

</resources>

适用于 Android 5.0 的材料设计(API 级别 21)

如何在 Android 4.4.4 上录制屏幕

视频比特率

于 2014-10-29T08:43:23.530 回答