私はこのコードを試しました:
LinearLayout someLayout=(LinearLayout)view.findViewById(R.id.someLayout);
someLayout.setBackgroundTintList(context.getResources().getColorStateList(Color.parseColor("#ff8800")));
しかし、エラーが発生します:Android.content.res.Resources$NotFoundException
外部ソースからカラー16進数を取得しているため、colors.xmlに埋め込むことができません。また、背景ではなく色合いを変更したいので、setBackgroundはオプションではありません。
GetColorStateList()を使用できないと思ったので、別の方法を探しました。最後に、次のコードを使用して色合いを設定することができました。
LinearLayout someLayout=(LinearLayout)view.findViewById(R.id.someLayout);
someLayout.getBackground().setColorFilter(Color.parseColor("#ff8800"), PorterDuff.Mode.SRC_ATOP);
これは、xmlファイルのbackgroundTintプロパティを変更したかのように機能したため、問題に最適です。
次の行を使って管理することができました。状況に合わせて変更してください。
myView.getBackground().setTint(currentView.getResources().getColor(R.color.colorAccent));
GetColorStateListメソッドはリソースのintidを予期し、RGBカラーintを渡しているため、このようにすることはできません。次のようにカラー状態リストを作成する必要があります link
次に、次のように設定します。
.getColorStateList(R.color.your_xml_name)
Kotlinの場合、@ Krestekの回答を変更しました:
someLayout.background.setColorFilter(Color.parseColor("#ff8800"), PorterDuff.Mode.SRC_ATOP)