【问题标题】:colorControlHighlight doesn't change color of flat button when pressed按下时 colorControlHighlight 不会改变平面按钮的颜色
【发布时间】:2017-07-06 17:25:36
【问题描述】:

当用户单击它时,我需要更改材质平面/无边框按钮的颜色。我当前的设置适用于凸起按钮,但不适用于无边框按钮。

我使用的样式,colorControlHighlight 按下时应该会改变颜色?:

<style name="PrimaryFlatButton" parent="Widget.AppCompat.Button.Borderless.Colored">
<item name="colorButtonNormal">@color/primary_color</item>
<item name="colorControlHighlight">@color/primary_color_dark</item>
<item name="colorAccent">@color/primary_color</item>
<item name="android:textColor">@color/white_color</item>

布局项:

  <Button
    android:id="@+id/Btn_SignUp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/PrimaryFlatButton" />

为什么凸起的按钮可以工作,但不是无边框?

【问题讨论】:

    标签: android android-layout material-design android-button


    【解决方案1】:

    你需要改变的是类似的东西

    在styles.xml中放这个

    <style name="ButtonTheme" parent="Theme.AppCompat.Light">
            <item name="colorControlHighlight">@color/button_highlight</item>
            <item name="colorButtonNormal">@color/colorPrimaryDark</item>
            <item name="colorControlActivated">@color/button_highlight</item>
    </style>
    

    并在 Button 的 xml 布局中将其添加为按钮主题

    <Button
    android:id="@+id/sign_in_button"
    android:theme="@style/ButtonTheme"
    //Other parameters as usual
    />
    

    【讨论】:

    • 为什么是父 Theme.Appcompat.Light 而不是 Widget.AppCompat.Button.Borderless.Colored?
    • 您需要指定与您的应用程序对齐的应用程序主题
    【解决方案2】:

    更改父名称如下:(不带“Borderless.Colored”)

    <style name="PrimaryFlatButton" parent="Widget.AppCompat.Button">
        <item name="colorButtonNormal">@color/primary_color</item>
        <item name="colorControlHighlight">@color/primary_color_dark</item>
        <item name="colorAccent">@color/primary_color</item>
        <item name="android:textColor">@color/white_color</item>
    </style>
    

    然后像刚才一样将其设置为“android:theme”。

    【讨论】:

    • 谢谢 - 但这不会让它成为一个普通的按钮吗?需要一个扁平的
    • 嗨@cfl,您找到解决方案了吗?
    • @Manukumar 抱歉,我记不清了,我看到的唯一区别是我的代码是这样的:@color/primary_color_dark 也许看看能不能解决问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多