我正在尝试设置视图的背景颜色(在本例中为Button) .
我用这个代码:
// set the background to green v.setBackgroundColor(0x0000FF00 ); v.invalidate();
它会导致Button从屏幕上消失 . 我做错了什么,以及在任何视图上更改背景颜色的正确方法是什么?
谢谢 .
代码不会将按钮设置为绿色 . 相反,它使按钮完全不可见 .
说明:颜色的十六进制值错误 . Alpha值为零时,颜色将不可见 .
对于完全不透明度绿色,正确的十六进制值为 0xFF00FF00 . 00和FF之间的任何Alpha值都会导致透明度 .
0xFF00FF00
你使你的按钮透明 . 第一个字节是alpha .
试试 v.setBackgroundColor(0xFF00FF00);
v.setBackgroundColor(0xFF00FF00);
使用Android 6说明使用ContextCompact
view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));
我在API min 16,目标23使用
Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button); WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
有几种选择......
Set background to green:
v.setBackgroundColor(0x00FF00);
Set background to green with Alpha:
Set background to green with Color.GREEN constant:
v.setBackgroundColor(Color.GREEN);
Set background to green defining in 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));
mButton.setBackgroundColor(getResources().getColor(R.color.myColor));
以及在任何视图上更改背景颜色的正确方法是什么?
在任何 View ?你有什么是正确的,虽然你应该放弃 invalidate() 电话 .
View
invalidate()
但是,有些 Views 已经有了背景 . 例如, Button 已经具有背景:按钮本身的面部 . 此背景为 StateListDrawable ,您可以在Android SDK安装中的 android-2.1/data/res/drawable/btn_default.xml 中找到该背景 . 反过来,这是指一堆九个补丁位图图像,有多种密度可供选择 . 您需要克隆并修改所有这些以实现您的绿色目标 .
Views
Button
StateListDrawable
android-2.1/data/res/drawable/btn_default.xml
简而言之,您将更好地找到另一个UI模式,而不是尝试更改 Button 的背景 .
你可以简单地使用:
view.setBackgroundColor(Color.parseColor("#FFFFFF"));
尝试添加:
setBackgroundColor(Color.parseColor("#FF0000"));
要设置要在屏幕上看到的第一种颜色,您还可以通过将此属性添加到相关视图,在相关的layout.xml(更好的设计)中执行此操作:
android:background="#FF00FF00"
这个question谈到了改变视图的背景颜色 . 在其中一个答案中,该人员解释了如何在运行时更改背景颜色 . 显然,您将研究如何修改屏幕上的其他对象,但这应该给您一个良好的开端,至少允许您在按钮单击时修改视图的背景颜色 .
您可以使用以下命令将hex-color设置为任何资源:
View.setBackgroundColor(Color.parseColor("#e7eecc"));
当你调用setBackgoundColor时,它会覆盖/删除任何现有的背景资源,包括任何边框,角落,填充等 . 你要做的是改变现有背景资源的颜色......
View v; v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);
尝试使用PorterDuff.Mode . *来获得不同的效果 .
view.setBackgroundColor(Color.rgb(0, 198, 255));
14 回答
代码不会将按钮设置为绿色 . 相反,它使按钮完全不可见 .
说明:颜色的十六进制值错误 . Alpha值为零时,颜色将不可见 .
对于完全不透明度绿色,正确的十六进制值为
0xFF00FF00
. 00和FF之间的任何Alpha值都会导致透明度 .你使你的按钮透明 . 第一个字节是alpha .
试试
v.setBackgroundColor(0xFF00FF00);
使用Android 6说明使用ContextCompact
我在API min 16,目标23使用
有几种选择......
Set background to green:
Set background to green with Alpha:
Set background to green with Color.GREEN constant:
Set background to green defining in Colors.xml
和使用:
和:
或者更长的啰嗦:
和:
在任何
View
?你有什么是正确的,虽然你应该放弃invalidate()
电话 .但是,有些
Views
已经有了背景 . 例如,Button
已经具有背景:按钮本身的面部 . 此背景为StateListDrawable
,您可以在Android SDK安装中的android-2.1/data/res/drawable/btn_default.xml
中找到该背景 . 反过来,这是指一堆九个补丁位图图像,有多种密度可供选择 . 您需要克隆并修改所有这些以实现您的绿色目标 .简而言之,您将更好地找到另一个UI模式,而不是尝试更改
Button
的背景 .你可以简单地使用:
尝试添加:
要设置要在屏幕上看到的第一种颜色,您还可以通过将此属性添加到相关视图,在相关的layout.xml(更好的设计)中执行此操作:
这个question谈到了改变视图的背景颜色 . 在其中一个答案中,该人员解释了如何在运行时更改背景颜色 . 显然,您将研究如何修改屏幕上的其他对象,但这应该给您一个良好的开端,至少允许您在按钮单击时修改视图的背景颜色 .
您可以使用以下命令将hex-color设置为任何资源:
当你调用setBackgoundColor时,它会覆盖/删除任何现有的背景资源,包括任何边框,角落,填充等 . 你要做的是改变现有背景资源的颜色......
尝试使用PorterDuff.Mode . *来获得不同的效果 .
你可以简单地使用: