現在、ユーザーが を選択できるメニューを作成してAppCompatImageView
おりGridLayout
、画像の前景にチェックマーク アイコンを配置することでビューが選択されていることを示します。API 23 では呼び出すだけView.setForeground()
でこれを行うことができますが、下位の API ではそのメソッドは存在しません。私が使用できる何らかの回避策はありますか?
を使用してみましたが、使用して設定した画像の高さが同じでないLayerDrawable
場合、チェックマーク アイコンが押しつぶされます。android:src=
そのためのコードは次のようになります。
AppCompatImageView imageView = (AppCompatImageView) view;
int id = getResources().getIdentifier("drawable/" + view.getTag(), null, getPackageName());
Drawable backgroundLayer = ContextCompat.getDrawable(this, id);
Drawable foregroundLayer = ContextCompat.getDrawable(this, R.drawable.ic_selected);
Drawable[] layers = {backgroundLayer, foregroundLayer};
LayerDrawable layerDrawable = new LayerDrawable(layers);
imageView.setImageDrawable(layerDrawable);
最終的には次のようになります。
チェックを正方形の縦横比にしたいとき。ドローアブルの背景をやり直して正方形のアスペクト比にするのは避けたいと思います。これは、他にもやり直さなければならないドローアブルが大量にあるためです。