我遇到了开发Android应用程序的问题。 当用户点击按钮时,我需要更改此按钮的背景颜色。但我需要做的事情不会影响风格,主要是形状。
答案 0 :(得分:1)
好的,因为你说没有改变它的风格,我想这就是你想要的,
1.您可能对此类滤色器感兴趣
Button btn = (Button) findViewById(R.id.button1);
btn.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
根据您所需的颜色使用不同的值。如果您想知道颜色的常量值,可以参考the documents。
2.您可以使用PorterDuff multiply mode
以编程方式设置整个按钮的阴影。这将改变按钮颜色而不仅仅是色调。
例如,红色阴影按钮
btn.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
绿色阴影按钮
btn.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
依此类推。它实际上是通过将当前按钮颜色值乘以颜色值来实现的。
3.您还可以使用this Android Button Maker等在线工具自定义按钮,并在布局中使用android:background="@drawable/custom_btn"
(<Button>
标记内)来定义自定义按钮。
现在还有很多方法可以达到你想要的效果,但我认为这些是你可以使用的一些简单快速的修复方法。希望这会有所帮助。
答案 1 :(得分:0)
尝试:
Button myButton = (Button) findViewById(R.id.myButton1);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
myButton.setBackgroundColor(color.Green);
}
});
答案 2 :(得分:0)
试试这个:
Button btn = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
btn.setBackgroundResource(color.lightblue);
}
});
答案 3 :(得分:0)
更改按钮背景的最简单方法是使用state list drawable。这是一个xml文件,其中定义了用于不同状态的按钮背景的不同drawable。一个例子:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true"
<item android:drawable="@drawabel/normal"/> // Drawable in normal state
<item android:drawabel="@drawable/pressed"/ android:state_pressed="true"> //Drawabel when pressed
</selector>
只需在按钮xml或android:background="@drawable/background.xml"
中使用setBackground(R.drawable.background)
即可。该框架将为您完成工作。