繁体   English   中英

Android单击按钮不会更改背景颜色

[英]Android Click on button does not change the backgroud color

我想更改按钮的背景颜色,单击按钮时,此代码未显示任何错误,也无法正常工作。

   capstone.setOnClickListener(new HandleClick());
}
    private class HandleClick implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Button btn = (Button) v;
            String text = btn.getText().toString();
            btn.setBackgroundResource(R.color.btnClick);
            Log.d("color", R.color.btBackground + ""); // D/color: 2131427344
            Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
            toast.show();
        }
    }

Log.d()显示color的值,但按钮的颜色未更改。

setBackgroundResource(int)方法正在等待可绘制对象。 如果您想使用颜色,请使用适当的方法setBackgroundColor(int)

并调用btn.invalidate(); 之后

有关Android开发人员的更多详细信息,请参见http://developer.android.com/reference/android/view/View.html#setBackgroundResource(int)

如果需要将颜色资源用作视图的背景色,则需要使用getColor()从资源中获取ARGB颜色,然后在setBackgroundColor()中进行设置。

btn.setBackgroundColor(getResources().getColor(R.color.btBackground, null));

函数setBackgroundResource将呈现按钮。

尝试

setBackground(this.getResources().getDrawable(R.drawable.btBackground))

我们可以使用它,因为当取消单击按钮时它将获得默认的背景色。 或者我们可以使用我在答案中发布的代码,问题是我使用的颜色与默认颜色相同,并且在单击按钮时使用相同的颜色。

     capstone.setOnTouchListener(new HandleTouch());
    }   

 private class HandleTouch implements  View.OnTouchListener{
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Button btn = (Button) v;
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                btn.setBackgroundResource(R.color.btnClick);
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                btn.setBackgroundResource(R.color.btBackground);
            }
            return false;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM