有没有办法改变按钮后面的背景颜色(button.setBackgroundResource)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法改变按钮后面的背景颜色(button.setBackgroundResource)相关的知识,希望对你有一定的参考价值。

我是一名新的android开发学生,我正在尝试创建一个包含TextView和同一行内按钮的动态布局。

但我有一点问题。我在我的Drawables资源中设置了我的按钮

 button.setBackgroundResource(R.drawable.ic_comment_black_48px);

现在,我无法改变它背后的背景颜色。

我在主要的LinearLayout中创建了一个newLinearlayout,并创建了一个新的textView和一个新的Button。我已将它们放在LinearLayout的子项中并将其放在main中。这是工作,但不是我的按钮背后的背景颜色。

有没有办法做到这一点?

我的xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/grey"
    android:id="@+id/historyLayout">

</LinearLayout>

我的完整活动

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_history);

        mLinearLayout = findViewById(R.id.historyLayout);

        mMoodSaved = new ArrayList(7); // Define the max size of my ArrayList
        loadData();
        for (int i = 1; i <= 7; i++) {
            final TextView textView = new TextView(this);
            mLinearLyt = new LinearLayout(this);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            mLinearLyt.setOrientation(LinearLayout.HORIZONTAL);
            textView.setHeight(300);
            textView.setWidth(400);
            textView.setBackgroundColor(Color.RED);
            textView.setTextColor(Color.BLACK);
            textView.setTextSize(12);
            textView.setText(String.valueOf(i));
            mLinearLyt.setBackgroundColor(Color.YELLOW);
            mLinearLyt.addView(textView);
            mLinearLyt.setLayoutParams(params);


            ImageButton button = new ImageButton(this);
            LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            param2.setMargins(20,50,0,0);
            param2.height = 100;
            param2.width = 100;
            button.setLayoutParams(param2);
            button.setBackgroundResource(R.drawable.ic_comment_black_48px);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    soundConfirm();
                    Toast.makeText(getApplicationContext(), textView.getText(), Toast.LENGTH_LONG).show(); //Display Toast Message
                }
            });
            mLinearLyt.addView(button);
            mLinearLayout.addView(mLinearLyt);
        }
    }
答案

由于这是一个ImageButton,请设置

button.setImageResource(R.drawable.ic_comment_black_48px)

而不是setBackgroundResource。

以上是关于有没有办法改变按钮后面的背景颜色(button.setBackgroundResource)的主要内容,如果未能解决你的问题,请参考以下文章

VS2008如何用代码改变按钮背景颜色,字体大小和颜色

VC中改变窗口背景颜色和控件背景颜色

Qt QScrollBar 改变背景颜色

为uibutton背景图像iphone sdk设置渐变颜色(颜色)

有没有办法改变页面指示点颜色

qt中如何修改按钮的背景颜色?