使用AppCompat的Android中的着色按钮

seb*_*neo 6 java eclipse android android-appcompat android-support-library

有谁知道如何更改按钮颜色?

但是一个特定的按钮,而不是使用XML的应用程序的所有按钮.

即使使用AppCompat库,android:backgroundTint属性也不适用于pre-Lollipop.只有来自主题的colorButtonNormal才能在pre-Lollipop上运行.

真的吗?多可惜

我正在使用这个drawable(是一个简单的绿色)和一个按钮,但是当我使用按钮时,结果是高于普通按钮.

这是文件btn_green.xml

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<item android:state_pressed="true"><shape>
        <solid android:color="#ff5722" />

        <corners android:radius="4dp" />
    </shape></item>
<item android:state_focused="true"><shape android:shape="rectangle">
        <solid android:color="#4caf50" />

        <corners android:radius="4dip" />

        <stroke android:width="1dip" android:color="#F0FC00" />
    </shape></item>
<item><shape>
        <solid android:color="#4caf50" />

        <corners android:radius="4dp" />
    </shape></item>
Run Code Online (Sandbox Code Playgroud)

按钮是这样的:

            <android.support.v7.widget.AppCompatButton
            android:id="@+id/btnIngresar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_green"
            android:text="Hello"
            android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)

当我使用drawable时,按钮高于普通按钮(没有drawable),我不知道为什么.

Jin*_*inu 9

如果你想要低于风格

在此输入图像描述

添加此样式您的按钮

style="@style/Widget.AppCompat.Button.Borderless.Colored"
Run Code Online (Sandbox Code Playgroud)

如果你想要这种风格

在此输入图像描述

添加以下代码

style="@style/Widget.AppCompat.Button.Colored"
Run Code Online (Sandbox Code Playgroud)


小智 6

有一种设置BackgroundTint前棒棒糖设备的方法.试试这个: button.setSupportBackgroundTintList(getResources().getColorStateList(R.color.accentColor)); 参考这个答案:Lollipop的backgroundTint对按钮没有影响

  • 现在你应该使用`ViewCompat.setBackgroundTintList(view,colorList)`而不是`button.setSupportBackgroundTintList` (2认同)