前棒棒糖的无边框按钮与支持图书馆

时间:2015-10-10 00:41:18

标签: android android-layout material-design android-support-library android-design-library

我使用支持库(23.0.1)制作无边框平面按钮。它在Lollipop上正常工作。然而,当我按下按钮时前Lollipop它的颜色变为colorButtonNormal颜色,就像它是一个普通的按钮。

我不认为这是正常行为,聚焦的颜色应该像棒棒糖一样灰色。

这是Lollipop和Pre-lollipop的截图。

Lollipop上的第一个正常行为: Lollipop上处于正常状态和聚焦状态的无边框按钮

enter image description here

Pre-Lollipop上不正常的行为(欲望颜色像上面一样灰,但不是): 正常状态下的无边框按钮和前棒棒糖上的聚焦状态 enter image description here

主题

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
//other stuff 
        <item name="colorButtonNormal">@color/orangeColor</item>
        <item name="buttonBarButtonStyle">@style/BorderlessButtonStyle</item>
</style>

<style name="BorderlessButtonStyle" parent="Widget.AppCompat.Button.Borderless">
        <item name="android:textColor">@color/blueTextColor</item>
</style>

现在按钮布局:

<Button
            android:id="@+id/btnForgotPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/forgot_your_password"
            style="?attr/buttonBarButtonStyle"
            />

任何方法都可以使用AppCompat主题和样式进行编写,而无需单独创建Drawables。

4 个答案:

答案 0 :(得分:24)

无边框按钮适用于支持库的Post和Pre Lollipop版本,但它们的onPressed颜色之间存在细微差别。

Pre-Lollipop:默认情况下,onPressed颜色与使用colorButtonNormal的默认按钮颜色设置相同。

Lollipop:默认情况下onPressed颜色为浅灰色,非常理想。

你可以制作这样的无边框按钮:

<Button  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Name"
    style="@style/Widget.AppCompat.Button.Borderless"/>

现在如果你想在所有版本上使用相同的onPressed颜色,那么你可以在新主题中设置colorControlHighlight并在Button上设置该主题。

<Button  
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Name"
        android:theme="@style/BorderlessButton"
        style="@style/Widget.AppCompat.Button.Borderless"/>

主题风格:

<style name="BorderlessButton" parent="Theme.AppCompat.Light">
      <item name="colorControlHighlight">YOUR COLOR</item>
</style>

已更新:自Android 5.0 Lollipop和AppCompat v22.1.0(及更高版本)以来,您可以对android:theme使用View属性。

答案 1 :(得分:3)

Time interval Count 2017-01-01 1 2017-01-02 2 2017-01-03 1 2017-01-04 0 2017-01-05 1 2017-01-06 1 添加到style="?borderlessButtonStyle"对我来说很好。

答案 2 :(得分:0)

你正在使用Android实现的&#34; buttonBarButtonStyle&#34;由于您是通过?atr调用它 - 请改用style="@style/BorderlessButtonStyle

编辑:保持您的xml不变,但您可以将其更改为您想要的行为,如下所示:

AppCompatButton button = (AppCompatButton) findViewById(R.id.btnForgotPassword);

ColorStateList colorStateList = new ColorStateList(new int[][] {{0}}, new int[] {0xFF969696});  
    //969696 is your wanted grey color, just change it
button.setSupportBackgroundTintList(colorStateList);

答案 3 :(得分:0)

为什么你担心某些事情只需要这样做并且是免费的

<Button
   android:id="@+id/btnForgotPassword"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/forgot_your_password"
   android:background="@drawable/abc_btn_borderless_material"
/>

现在不小心api的东西