我想在按钮上添加一些点击效果,所以我定义了一个可绘制的b1.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#cf00" />
</shape>
</item>
<item>
<shape>
<solid
android:color="#f00" />
</shape>
</item>
</selector>
然后我将其应用于按钮背景
<Button
android:id="@+id/main_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="btn"
android:background="@drawable/b1"
android:textColor="#fff"
android:textSize="15sp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:padding="10dp"
android:gravity="center"
/>
但是应用程序中有20多种不同的颜色按钮,我不想为每个按钮创建许多可绘制的按钮。如果我在后台使用drawable,我无法为这样的按钮设置背景颜色。如果我在背景中使用颜色,我无法将drawable设置为这样的按钮。
我可以定义一个只有按下样式的drawable吗?当按下按钮时,为按钮添加一些透明。同时,我可以在每个按钮中定义不同的颜色。
答案 0 :(得分:0)
您可以更改应用的主题,假设所有按钮都具有相同的默认/聚焦颜色,并且您只希望“按下”状态发生变化。
否则,选择器是您定义每个颜色/透明度选项的方式。使用一组或一组选择器没有“捷径”。
答案 1 :(得分:0)
由于您管理按下颜色的alpha的方式,您的选项有限。它具有相同的颜色,但具有一定的透明度以允许背景颜色融入。如果您在下面有全彩色图像,那么这样做的一个很好的理由。有二十种按钮颜色,很难看出情况如此。
因此,如果您使用的是纯色背景,那么您可以将每个按钮包装在FrameLayout中。将每个Frame布局的背景颜色设置为按钮颜色。将drawable按钮设置为使用#3xxx(其中xxx =你的bg颜色)。混合到按钮上的背景#3xxx与将按钮颜色的#C___混合到背景颜色(十六进制F-3 = C)相同。将可绘制按钮的正常状态设置为透明(@android:颜色/透明),以允许显示按钮的完整颜色。