Je crée actuellement un menu qui permet aux utilisateurs de sélectionner un AppCompatImageView
dans un GridLayout
et de montrer que la vue est sélectionnée en plaçant une icône de coche au premier plan de l'image. Dans l'API 23, je peux le faire en appelant simplement View.setForeground()
mais dans les API inférieures, cette méthode n'existe pas. Y at-il une sorte de solution de contournement que je pourrais utiliser?Définition du premier plan de AppCompatImageView par programmation API Android 19
J'ai essayé d'utiliser un LayerDrawable
mais l'icône de coche est écrasée si l'image que j'ai définie en utilisant android:src=
n'a pas la même hauteur. Voici ce que le code qui ressemble à ce moment:
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);
Et voici ce qui finit par ressembler à:
Quand je voudrais que le chèque soit un ratio d'aspect carré. Je voudrais éviter de refaire l'arrière-plan dessinable pour en faire un rapport d'aspect carré car j'ai une grande quantité d'autres tirages que je devrais refaire aussi.
Désolé, j'ai oublié de mentionner ceci dans ma question originale, j'utilise l'élément de fond pour mettre une bordure autour des éléments dans le 'GridLayout' – Jason