2017-05-29 8 views
0

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 à:

Result

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.

Répondre

0

Avez-vous essayé de définir l'image comme arrière-plan et la coche comme src? Une fois que l'ImageView a une taille fixe pour correspondre au format de l'image, cela devrait fonctionner correctement.

imageView.setBackgroundResource(id)

imageView.setImageResource(R.drawable.ic_selected)

L'utilisation d'un scaleType CENTER si la taille de la coche est idéal ou CENTER_INSIDE avec un rembourrage si vous obtenez ce que vous voulez.

+0

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