※2017年に下書き保存していた記事の投稿
内容
Drawable の背景色を java コードから設定しているが、OS バージョンによってできるできないがあったので、OS バージョンによってメソッドを変えて対応した。
詳細
Drawable d = DrawableCompat.wrap(ContextCompat.getDrawable(getActivity(), R.drawable.round_icon_gray));
d.setColorFilter(ContextCompat.getColor(getActivity(), R.color.BG_WHITE_GRAY), PorterDuff.Mode.SRC_IN);
これだと、どうも Lolippo 以下で色の設定が効かない。
Drawable d = DrawableCompat.wrap(ContextCompat.getDrawable(getActivity(), R.drawable.round_icon_gray));
DrawableCompat.setTint(d, ContextCompat.getColor(getActivity(), R.color.BG_WHITE_GRAY));
DrawableCompat.setTintMode(d, PorterDuff.Mode.SRC_IN);
これだと、今度は Mashmallow 以上で色の設定が効かない。
ぐぐっても原因となりそうなものは見つからないし、だいぶハマったあとに気づいた。
DrawableCompat.wrap()
でインスタンス作ってるから挙動が違うんじゃないか??
その箇所を削除したら 4.4〜8.0 で setColorFilter() で色がつけられるようになった。
初歩的な見落としだった。。
Drawable d = ContextCompat.getDrawable(getActivity(),R.drawable.round_icon_gray);
d.setColorFilter(ContextCompat.getColor(getActivity(),R.color.BG_WHITE_GRAY), PorterDuff.Mode.SRC_IN);