如何在android上获取按钮的背景颜色?

Posted

技术标签:

【中文标题】如何在android上获取按钮的背景颜色?【英文标题】:how to get background color of button on android? 【发布时间】:2012-04-07 15:24:50 【问题描述】:

我想获取按钮的颜色。我无法从返回可绘制对象的 getbackground 函数中获取颜色。我使用了 getsolidcolor ,它返回整数值,但它始终为 0(零).. 我不明白问题出在哪里。也许它不是真正的功能..

这是我的安卓代码

            int renk = btn1.getSolidColor();

        if(renk== Color.GREEN)
            Toast.makeText(getApplicationContext(), "green" , 1000).show();
        else if(renk== Color.RED)
            Toast.makeText(getApplicationContext(), "red" , 1000).show();
        else if(renk== Color.YELLOW)
            Toast.makeText(getApplicationContext(), "yellow" , 1000).show();
        else
            Toast.makeText(getApplicationContext(), "unknown", 1000).show();

        btn1.setBackgroundColor(Color.YELLOW);
     renk = btn1.getSolidColor();


        if(renk== Color.GREEN)
            Toast.makeText(getApplicationContext(), "green" , 1000).show();
        else if(renk== Color.RED)
            Toast.makeText(getApplicationContext(), "red" , 1000).show();
        else if(renk== Color.YELLOW)
            Toast.makeText(getApplicationContext(), "yellow" , 1000).show();
        else
            Toast.makeText(getApplicationContext(), "unknown", 1000).show();

即使我将背景设置为黄色,我也会收到未知的 toast 消息..

【问题讨论】:

【参考方案1】:

给你....

 Button myButton = (Button) findViewById(R.id.takePicture);

 myButton.setBackgroundDrawable(new PaintDrawable(Color.YELLOW));

 PaintDrawable drawable = (PaintDrawable) myButton.getBackground();

 int color = drawable.getPaint().getColor();

【讨论】:

??那不是总是返回黄色吗? 我将这个((ColorDrawable) row.getBackground()).getColor() 用作(row.background as ColorDrawable).color,但我遇到了这个错误android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.ColorDrawable

以上是关于如何在android上获取按钮的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

当背景设置为可绘制时如何从按钮获取颜色

android createBitmap,如何设置背景色

如何在android中更改背景时保持按钮颜色相同

在 Android Studio 中按住时如何更改按钮的背景颜色?

Android:更改按钮文本和背景颜色

Android:更改背景颜色查看 onClick 按钮