如何设置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));