如何设置视图的背景颜色

问题描述 投票:163回答:16

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

我用这个代码:

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

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

谢谢。

android view colors background set
16个回答
274
投票

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

试试v.setBackgroundColor(0xFF00FF00);


5
投票

你可以简单地使用:

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

4
投票

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


4
投票
mButton.setBackgroundColor(getResources().getColor(R.color.myColor));

3
投票

从Android 6开始使用ContextCompat

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

2
投票

你可以简单地使用:

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

0
投票
view.setBackgroundColor(R.color.primaryColor);

将颜色添加到以前的颜色值,因此我有不同的颜色。

对我有用的是:

view.setBackgroundResource(R.color.primaryColor);

0
投票

假设我们在values=>colors.xml中有一个原色:

<resources>
    <color name="primary">#FDD835</color>
</resources>

因此,如果我们想将自定义颜色用于setBackgroundColor(@ColorInt int Color),那么我们只需要一个带有构造函数/方法的注释@SuppressLint("ResourceAsColor"),它将用作:

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);

        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);

        ....


    }

140
投票

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

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

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


116
投票

有几种选择......

将背景设置为绿色:

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

35
投票

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

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

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

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

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

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


12
投票

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

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

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

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


11
投票

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

android:background="#FF00FF00"

11
投票

尝试添加:

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

6
投票

我在API min 16,目标23使用

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

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
© www.soinside.com 2019 - 2024. All rights reserved.