0

現在、ユーザーが を選択できるメニューを作成して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);

最終的には次のようになります。

結果

チェックを正方形の縦横比にしたいとき。ドローアブルの背景をやり直して正方形のアスペクト比にするのは避けたいと思います。これは、他にもやり直さなければならないドローアブルが大量にあるためです。

4

1 に答える 1

0

画像を背景に、チェックマークをsrcに設定してみましたか?ImageView が画像の縦横比に一致するように固定サイズに設定されると、正常に動作するはずです。

imageView.setBackgroundResource(id)

imageView.setImageResource(R.drawable.ic_selected)

チェックマークのサイズが理想的である場合は CENTER の scaleType を使用するか、パディングを使用して CENTER_INSIDE を使用すると、必要なものが得られます。

于 2017-05-30T02:06:52.057 に答える