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

Sha*_*arj 15 android android-layout android-support-library material-design android-design-library

我使用支持库(23.0.1)制作无边框平面按钮.它在Lollipop上正常工作.但是在Lollipop之前我按下按钮它的颜色变成了colorButtonNormal颜色,就像它是一个普通的按钮.

我不这么认为这是一种正常的行为,聚焦的颜色应该像Lollipop一样灰.

这是Lollipop和Pre-lollipop的截图.

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

在此输入图像描述

在Pre-Lollipop上不正常的行为(Desire颜色像上面的灰色,但不是):正常状态下的无边框按钮和前棒棒糖上的聚焦状态 在此输入图像描述

主题

<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>
Run Code Online (Sandbox Code Playgroud)

现在按钮布局:

<Button
            android:id="@+id/btnForgotPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/forgot_your_password"
            style="?attr/buttonBarButtonStyle"
            />
Run Code Online (Sandbox Code Playgroud)

任何方式来使用AppCompat主题和样式来编写它而无需单独的Drawables.

Sha*_*arj 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"/>
Run Code Online (Sandbox Code Playgroud)

现在如果要在所有版本上使用相同的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"/>
Run Code Online (Sandbox Code Playgroud)

你的风格主题:

<style name="BorderlessButton" parent="Theme.AppCompat.Light">
      <item name="colorControlHighlight">YOUR COLOR</item>
</style>
Run Code Online (Sandbox Code Playgroud)

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

  • @AlexPetrenko是的,您可以在自Android 5和AppCompat v22.1.0(及更高版本)的View上使用`android:theme`https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH (2认同)