如何设置视图的背景颜色

我正在尝试设置视图的背景颜色(在本例中为Button) .

我用这个代码:

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

它会导致Button从屏幕上消失 . 我做错了什么,以及在任何视图上更改背景颜色的正确方法是什么?

谢谢 .

回答(14)

3 years ago

你使你的按钮透明 . 第一个字节是alpha .

试试 v.setBackgroundColor(0xFF00FF00);

3 years ago

使用Android 6说明使用ContextCompact

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

3 years ago

我在API min 16,目标23使用

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));

3 years ago

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

代码不会将按钮设置为绿色 . 相反,它使按钮完全不可见 .

说明:颜色的十六进制值错误 . Alpha值为零时,颜色将不可见 .

对于完全不透明度绿色,正确的十六进制值为 0xFF00FF00 . 00和FF之间的任何Alpha值都会导致透明度 .

3 years ago

有几种选择......

Set background to green:

v.setBackgroundColor(0x00FF00);

Set background to green with Alpha:

v.setBackgroundColor(0xFF00FF00);

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));

3 years ago

mButton.setBackgroundColor(getResources().getColor(R.color.myColor));

3 years ago

以及在任何视图上更改背景颜色的正确方法是什么?

在任何 View ?你有什么是正确的,虽然你应该放弃 invalidate() 电话 .

但是,有些 Views 已经有了背景 . 例如, Button 已经具有背景:按钮本身的面部 . 此背景为 StateListDrawable ,您可以在Android SDK安装中的 android-2.1/data/res/drawable/btn_default.xml 中找到该背景 . 反过来,这是指一堆九个补丁位图图像,有多种密度可供选择 . 您需要克隆并修改所有这些以实现您的绿色目标 .

简而言之,您将更好地找到另一个UI模式,而不是尝试更改 Button 的背景 .

3 years ago

你可以简单地使用:

view.setBackgroundColor(Color.parseColor("#FFFFFF"));

3 years ago

尝试添加:

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

3 years ago

要设置要在屏幕上看到的第一种颜色,您还可以通过将此属性添加到相关视图,在相关的layout.xml(更好的设计)中执行此操作:

android:background="#FF00FF00"

3 years ago

这个question谈到了改变视图的背景颜色 . 在其中一个答案中,该人员解释了如何在运行时更改背景颜色 . 显然,您将研究如何修改屏幕上的其他对象,但这应该给您一个良好的开端,至少允许您在按钮单击时修改视图的背景颜色 .

3 years ago

您可以使用以下命令将hex-color设置为任何资源:

View.setBackgroundColor(Color.parseColor("#e7eecc"));

3 years ago

当你调用setBackgoundColor时,它会覆盖/删除任何现有的背景资源,包括任何边框,角落,填充等 . 你要做的是改变现有背景资源的颜色......

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

尝试使用PorterDuff.Mode . *来获得不同的效果 .

3 years ago

你可以简单地使用:

view.setBackgroundColor(Color.rgb(0, 198, 255));