使用 AppCompat 为 Android 中的按钮着色
Posted
技术标签:
【中文标题】使用 AppCompat 为 Android 中的按钮着色【英文标题】:Coloring Buttons in Android with AppCompat 【发布时间】:2015-08-20 12:23:31 【问题描述】:有人知道如何改变按钮颜色吗?
但只有一个特定的按钮,而不是使用 XML 的应用程序的所有按钮。
android:backgroundTint 属性甚至在棒棒糖之前也不起作用 与 AppCompat 库。只有来自主题的 colorButtonNormal 可以工作 前棒棒糖。
这是真的吗?太可惜了
我正在使用带有按钮的可绘制对象(简单的绿色),但是当我使用按钮时,结果却比普通按钮高。
这是文件 btn_green.xml
<?xml version="1.0" encoding="utf-8"?>
<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: android:color="#F0FC00" />
</shape></item>
<item><shape>
<solid android:color="#4caf50" />
<corners android:radius="4dp" />
</shape></item>
按钮是这样的:
<android.support.v7.widget.AppCompatButton
android:id="@+id/btnIngresar"
android:layout_
android:layout_
android:background="@drawable/btn_green"
android:text="Hello"
android:textStyle="bold" />
当我使用drawable时,按钮比普通按钮高(没有drawable),我不知道为什么。
【问题讨论】:
您使用的是 AppCompat 主题吗? 【参考方案1】:如果你想要下面的样式
将此样式添加到您的按钮
style="@style/Widget.AppCompat.Button.Borderless.Colored"
如果你想要这种风格
添加以下代码
style="@style/Widget.AppCompat.Button.Colored"
【讨论】:
【参考方案2】:有一种方法可以在棒棒糖之前的设备中设置BackgroundTint
。尝试这个:
button.setSupportBackgroundTintList(getResources().getColorStateList(R.color.accentColor));
参考这个答案:Lollipop's backgroundTint has no effect on a Button
【讨论】:
现在你应该使用ViewCompat.setBackgroundTintList(view, colorList)
而不是button.setSupportBackgroundTintList
但是在 XML 中有没有办法做到这一点?以上是关于使用 AppCompat 为 Android 中的按钮着色的主要内容,如果未能解决你的问题,请参考以下文章
Android 5.0 Lollipop 中的 ActionMode ActionBar 样式(带有 AppCompat)
android.widget.Toolbar 无法转换为 androidx.appcompat.widget.Toolbar(android 工具栏)