androidlayoutcolorshexandroid-linearlayout

How to set layout background tint from string programmatically?


I tried this code:

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

But I'm getting an error: android.content.res.Resources$NotFoundException I'm getting the color hex from external source so I can't embed it in colors.xml. Also I want to change the tint, not the background so setBackground is not an option.


Solution

  • I figured I can't use getColorStateList() so I searched for another way to do it. At the end I was able to set color tint using the following code:

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

    This worked as if I changed the backgroundTint property in the xml file, so it's perfect for my problem.