如何设置视图的背景颜色

时间:2010-01-31 23:55:30

标签: android view colors background set

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

我使用此代码:

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

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

感谢。

20 个答案:

答案 0 :(得分:271)

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

尝试v.setBackgroundColor(0xFF00FF00);

答案 1 :(得分:139)

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

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

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

答案 2 :(得分:114)

有几种选择......

将背景设置为绿色:

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

答案 3 :(得分:34)

您可以使用以下颜色将六角颜色设置为任何资源:

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

答案 4 :(得分:16)

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

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

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

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

答案 5 :(得分:12)

  

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

任何 View上?你有什么是正确的,但你应放弃invalidate()电话。

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

简而言之,您可以更好地找到其他UI模式,而不是尝试更改Button的背景。

答案 6 :(得分:11)

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

android:background="#FF00FF00"

答案 7 :(得分:11)

尝试添加:

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

答案 8 :(得分:6)

我在API min 16使用,目标23

()

答案 9 :(得分:5)

您可以简单地使用:

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

答案 10 :(得分:4)

这对我有用

v.getBackground().setTint(Color.parseColor("#212121"));

这种方式只会改变背景的颜色而不改变背景本身。例如,如果您有带圆角的背景,这会很有用。

答案 11 :(得分:4)

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

答案 12 :(得分:3)

使用Android 6说明使用ContextCompact

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

答案 13 :(得分:2)

您可以简单地使用:

            var cts = new CancellationTokenSource(); // Work for 5 sec  

            try

            {

                RepeadtReadingXml(2000, 1000, cts.Token).Wait();

            }

            catch (AggregateException ae)

            {

                ae.Handle(e => e is TaskCanceledException);

            }

答案 14 :(得分:1)

kotlin 中,您可以这样操作:

val backgroundColor = R.color.whatever_color_you_like
view.setBackgroundColor(getColorCompat(backgroundColor))

getColorCompat()是扩展功能的地方:

/**
 * Extension method to provide simpler access to {@link ContextCompat#getColor(int)}.
 */

 fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)

答案 15 :(得分:0)

view.setBackgroundColor(R.color.primaryColor);

为先前的颜色值添加颜色,所以我有不同的颜色。

对我有用的是:

view.setBackgroundResource(R.color.primaryColor);

答案 16 :(得分: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);

        ....


    }

答案 17 :(得分:0)

您必须在参数中传递@RestController @RequestMapping(path = "api") public class CompanyController { @Autowired private GraphQLSomething graphQLSomething; @GetMapping("company/{id}") public ResponseEntity<?> societe(@PathVariable @NotNull Integer id) { GraphQLSomethingResult result = GraphQLSomething.query("company(id: $id) { id name andsoone }", "{ \"id\": 123456 }").execute(); // not really sure of the GraphQL syntax here, but it'll need some tests... return result.getDataOrElse(); } }

第一个示例:

int

第二个例子:

view.setBackgroundColor(-500136)

答案 18 :(得分:0)

这应该可以正常工作:v.setBackgroundColor(0xFF00FF00);

答案 19 :(得分:0)

我尝试了以上所有方法。但是我还没有达到我所需要的。这是我的尝试。 如果您使用十六进制代码作为颜色,并且想要将颜色设置为图像的背景,那么这就是kotlin代码。

val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val colorCode = "#ffffff"
canvas.drawColor(Color.parseColor(colorCode))
mImageViewLogo.setImageBitmap(bitmap)