【问题标题】:Raised and flat buttons with different background and highlight colors具有不同背景和突出显示颜色的凸起和扁平按钮
【发布时间】:2015-12-09 03:02:33
【问题描述】:

我正在使用 com.android.support:appcompat-v7:23.0.1 库创建应用程序。

我在values/styles.xml中定义应用主题:

<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="colorControlHighlight">@color/highlight_dark</item>
    <item name="colorButtonNormal">@color/primary</item>
    <item name="android:textColorPrimary">@color/primary_text</item>
    <item name="android:textColorSecondary">@color/secondary_text</item>
</style>

<style name="AppTheme" parent="BaseAppTheme"></style>

我使用 AppCompat Widget.AppCompat.Button.Colored 样式用于凸起按钮,Widget.AppComap.Button.Borderless.Colored 样式用于扁平按钮。

colorAccent 主题属性定义了凸起按钮背景颜色和平面按钮文本颜色,但我认为这是一个错误,因为这些颜色应该由 colorButtonNormal 属性定义,就像 Widget.AppCompat.Button 和 Widget.AppComap.Button.Borderless 样式一样。

colorControlHighlight 主题属性为两个按钮定义了ripple 颜色。

问题是:

  1. 如何使用不同颜色的凸起按钮?例如,我想要具有主色和强调色的按钮。
  2. 我的强调色不亮,所以凸起的按钮背景是饱和的,colorControlHighlight 应该是亮的 (#40ffffff)。但是平面按钮具有透明背景,colorControlHighlight 应该是深色的 (#40000000)。如何为凸起和扁平按钮设置不同的ripple 颜色?

我在下面添加了我当前的解决方案,但我不禁觉得我错过了一些东西。

【问题讨论】:

    标签: android material-design android-appcompat


    【解决方案1】:

    经过一些研究和谷歌搜索,我为不同的凸起和扁平按钮定义了单独的主题:

    <style name="AppTheme.RaisedButton">
        <item name="buttonStyle">@style/Widget.AppCompat.Button.Colored</item>
    </style>
    
    <style name="AppTheme.RaisedButton.Primary">
        <item name="colorAccent">@color/primary</item>
    </style>
    
    <style name="AppTheme.RaisedButton.Accent">
    </style>
    
    <style name="AppTheme.FlatButton">
        <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless.Colored</item>
        <item name="colorControlHighlight">@color/highlight_light</item>
    </style>
    
    <style name="AppTheme.FlatButton.Primary">
        <item name="colorAccent">@color/primary</item>
    </style>
    
    <style name="AppTheme.FlatButton.Accent">
    </style>
    

    请注意,我使用的是buttonStyle 属性而不是android:buttonStyle,因为它不适用于棒棒糖之前的设备。

    在android:theme 属性中使用这些主题:

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/my_button"
        android:theme="@style/AppTheme.FlatButton.Primary" />
    

    【讨论】:

    • 可靠的答案是愚蠢的文档是如何不是什么。
    • 亲爱的耶稣!为什么谷歌不提供这样的信息超出了我的范围!!此处的此文档也应显示样式 XML google.com/design/spec/components/…
    猜你喜欢
    • 1970-01-01
    • 2011-04-13
    • 2012-05-15
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2017-01-06
    • 2019-07-28
    • 2023-02-13
    相关资源
    最近更新 更多