我想给片段中定义的按钮上色。我创建了新样式(在按钮中用作主题),并为启用状态定义了“ colorAccent”,为禁用状态定义了“ colorButtonNormal”,该样式的父级为“ Widget.AppCompat.Button”。我希望它的颜色完全与禁用按钮时在colorButtonNormal中编写的一样。
<style name="Material.Button.Primary" parent="@style/Widget.AppCompat.Button">
<item name="android:colorButtonNormal">@color/color_disabled</item>
<item name="colorAccent">@color/color_primary</item>
</style>
<Button
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textAppearance="@style/AppTheme.Text"
android:theme="@style/Material.Button.Primary" />
启用该按钮后,其colorAccent中的颜色正确。当用户单击它时,它会被禁用,应为灰色(#b2b2b2),但会变得更亮一些(#E7E7E7)。似乎需要我定义的颜色并与白色混合。
我试图更改样式的父级,并在样式和按钮的属性上进行了一些更改,因为它们是从互联网上的一些指南中编写的,但是没有任何效果。我当前的解决方案是将colorButtonNormal设置为#000000。禁用按钮后,它将变为#B9B9B9。
答案 0 :(得分:0)
如果我错了,请原谅我,但据我所知,您希望为启用/禁用状态使用不同的颜色。
更新
为保持物质效果,您可以对Widget.AppCompat.Button.Colored
使用样式并创建具有指定颜色的主题:
<Button
.
.
.
style="@style/Widget.AppCompat.Button.Colored"
android:theme="@style/CustomButton"/>
并创建主题,其中colorButtonNormal
用于禁用状态
<style name="CustomButton" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/color_disabled</item>
<item name="colorAccent">@color/color_enabled</item>
</style>
没有实质影响的旧
您可以尝试使用选择器,例如:
custom_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@color/color_disabled" />
<item android:state_enabled="true" android:drawable="@color/color_enabled/>
</selector>
,然后在xml中输入按钮:
<Button
.
.
.
android:background="@drawable/custom_button" />