如何设置View的背景颜色

我试图设置一个视图的背景颜色(在这种情况下是一个button)。

我使用这个代码:

// set the background to green v.setBackgroundColor(0x0000FF00 ); v.invalidate(); 

它导致button从屏幕上消失。 我在做什么错了,什么是正确的方法来改变任何视图的背景颜色?

谢谢。

你让你的button透明。 第一个字节是阿尔法。

尝试v.setBackgroundColor(0xFF00FF00);

当你调用setBackgoundColor它覆盖/删除任何现有的背景资源,包括任何边界,angular落,填充等。你想要做的是改变现有的背景资源的颜色…

 View v; v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN); 

用PorterDuff.Mode。*试验不同的效果。

几个select做这个…

将背景设置为绿色:

 v.setBackgroundColor(0x00FF00); 

用Alpha设置背景为绿色:

 v.setBackgroundColor(0xFF00FF00); 

使用Color.GREEN常量将背景设置为绿色:

 v.setBackgroundColor(Color.GREEN); 

将背景设置为Colors.xml中的绿色定义

 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="myGreen">#00FF00</color> <color name="myGreenWithAlpha">#FF00FF00</color> </resources> 

并使用:

 v.setBackgroundResource(R.color.myGreen); 

和:

 v.setBackgroundResource(R.color.myGreenWithAlpha); 

或者更长的啰嗦:

 v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen)); 

和:

 v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha)); 

您可以将hex颜色设置为任何资源:

 View.setBackgroundColor(Color.parseColor("#e7eecc")); 
 // set the background to green v.setBackgroundColor(0x0000FF00 ); v.invalidate(); 

该代码不会将button设置为绿色。 相反,它使button完全不可见。

说明:颜色的hex值是错误的。 Alpha值为零时,颜色将不可见。

对于完全不透明的绿色,正确的hex值是0xFF00FF00 。 00和FF之间的任何Alpha值都会导致透明度。

什么是正确的方法来更改任何视图的背景颜色?

任何 View ? 你有什么是正确的,但你应该放弃invalidate()调用。

但是,一些Views已经有了背景。 例如,一个Button已经有一个背景:button本身的面部。 这个背景是一个StateListDrawable ,你可以在你的Android SDK安装中的android-2.1/data/res/drawable/btn_default.xml中find它。 这反过来又指的是一堆九个贴片位图图像,可以多种密度。 你需要克隆和修改所有这些来实现你的绿色目标。

总之,你会更好地find另一个UI模式,而不是试图改变一个Button的背景。

为了设置在屏幕上看到的第一个颜色,你也可以在相关的layout.xml(更好的devise)中通过将这个属性添加到相关的View中来实现:

 android:background="#FF00FF00" 

尝试添加:

 setBackgroundColor(Color.parseColor("#FF0000")); 

我用API 16分,目标23

 Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button); WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent)); 

这个问题谈到改变一个视图的背景颜色。 在其中一个答案中,这个人解释了如何在运行时改变背景颜色。 显然你要研究如何修改屏幕上的其他对象,但这应该给你一个很好的开始,至less让你修改button点击的视图的背景颜色。

你可以简单的使用:

 view.setBackgroundColor(Color.parseColor("#FFFFFF")); 
 mButton.setBackgroundColor(getResources().getColor(R.color.myColor)); 

用Android 6说明使用ContextCompact

  view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));