如何以编程方式从字符串设置布局背景色调?

Was*_*eem 5 layout android hex colors android-linearlayout

我试过这段代码:

LinearLayout someLayout=(LinearLayout)view.findViewById(R.id.someLayout);
        someLayout.setBackgroundTintList(context.getResources().getColorStateList(Color.parseColor("#ff8800")));
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:android.content.res.Resources$NotFoundException 我从外部源获取颜色十六进制,所以我无法将其嵌入colors.xml中.另外我想改变色调,而不是背景,所以setBackground不是一个选项.

Was*_*eem 10

我想我不能使用getColorStateList()所以我搜索了另一种方法来做到这一点.最后,我可以使用以下代码设置颜色色调:

LinearLayout someLayout=(LinearLayout)view.findViewById(R.id.someLayout);
        someLayout.getBackground().setColorFilter(Color.parseColor("#ff8800"), PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)

这就好像我更改了xml文件中的backgroundTint属性,因此它非常适合我的问题.


Jin*_*Lim 8

我能够使用以下行进行管理。根据你的情况改变它。

myView.getBackground().setTint(currentView.getResources().getColor(R.color.colorAccent));
Run Code Online (Sandbox Code Playgroud)