更改按钮的背景颜色而不更改其样式

时间:2014-09-05 21:21:48

标签: java android mobile

我遇到了开发Android应用程序的问题。 当用户点击按钮时,我需要更改此按钮的背景颜色。但我需要做的事情不会影响风格,主要是形状。

4 个答案:

答案 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)即可。该框架将为您完成工作。