Android:编程自定义按钮背景颜色,同时适合内部按钮
Posted
技术标签:
【中文标题】Android:编程自定义按钮背景颜色,同时适合内部按钮【英文标题】:Android: Programming custom made button background color, while fitting inside button 【发布时间】:2017-08-14 08:55:14 【问题描述】:我试图在切换时将按钮的背景颜色更改为某种颜色,在未切换时更改为某种颜色,但是当我这样做时,颜色会改变按钮的形状。 这是我的代码:
public void onClick(View v)
if(index < 9)
GameEngine.getInstance().setNumber(number);
else if(index == 9)
GameEngine.getInstance().setNumber(number);
else if (index == 12)
GameEngine.getInstance().draftModeSetter();
v.setBackgroundColor(Color.parseColor("#ffb6c1"));
这是结果before color change 和结果after color change。您可以清楚地看到“草稿”按钮变得更大,更清晰。
【问题讨论】:
【参考方案1】:如果背景颜色是使用
btn.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);
可以使用以下方法重置:
btn.getBackground().clearColorFilter();
【讨论】:
这是最接近工作的,除了它只是在切换时使按钮变白,无论我输入什么颜色或 PorterDuff 模式。 您可以为调用 setColorFilter() 的同一对象调用 clearColorFilter()。该方法等价于 setColorFilter(null),可以说比后者更具可读性。 有没有办法将实际颜色按钮更改为我想要的颜色? setColorFilter() 方法只是在切换时将其设置为白色,我似乎无法更改它。 我想你的问题的答案在这里:***.com/questions/11681895/… 不完全是,因为这是一个类中的自定义按钮,它在 XML 中不是作为单个按钮,而是作为一组按钮。【参考方案2】:我觉得你应该使用xml:shape,selector like:
shape.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp" />
<solid android:color="@color/blue_400" />
<stroke
android:
android:color="@color/blue_400" />
</shape>
selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_comm_bt_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/shape_comm_bt_normal"
android:state_pressed="false" />
</selector>
使用
<Button
...
android:background="@drawable/selector_common_bt"
...
/>
【讨论】:
以上是关于Android:编程自定义按钮背景颜色,同时适合内部按钮的主要内容,如果未能解决你的问题,请参考以下文章