144 votes

Changer l'image d'un ImageView de manière programmatique dans Android

Lorsque je change l'image de façon programmatique, la nouvelle image s'affiche au-dessus de l'ancienne qui est définie à l'origine dans le fichier de mise en page ?

Voici un extrait de mon fichier de mise en page :

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="39dp"
    android:gravity="center_vertical" >
    <ImageView
        android:id="@+id/qStatusImage"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:layout_margin="5dp"
        android:background="@drawable/thumbs_down"
         />

    <TextView
        android:id="@+id/grp_child"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:textColor="@color/radio_colors"
        android:textStyle="normal"
        android:background="@color/grey"
    />

 </LinearLayout>

Et le code qui définit l'imageView :

     @Override
public View getChildView(final int groupPosition, final int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) {
//Answers
            if(answersGroup != null)
                   answersGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                       @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {

                         //  int index = answersGroup.indexOfChild(findViewById(answersGroup.getCheckedRadioButtonId()));

                           qImageView = (ImageView) V.findViewById(R.id.qStatusImage);
                           if(ans ==0 || ans == 5){
                            //   qSV.setImageResource(0);
                               qImageView.setImageResource(R.drawable.thumbs_up);
                           }
                           else
                               qImageView.setImageResource(R.drawable.thumbs_down);

                       }
                   });

Qu'est-ce que je rate ?

14voto

mricyicy Points 186

Dans votre XML pour la vue de l'image, où vous avez android:background="@drawable/thumbs_down changer cela en android:src="@drawable/thumbs_down"

Actuellement, il place cette image en arrière-plan de la vue et non l'image réelle.

3voto

H A Tanim Points 99

Si les solutions ci-dessus ne fonctionnent pas, il suffit de supprimer cette ligne entière du XML.

android:src="@drawable/image"

& seulement essayer

imageView.setBackgroundResource(R.drawable.image);

2voto

svkaka Points 497

Vous pouvez utiliser

val drawableCompat = ContextCompat.getDrawable(context, R.drawable.ic_emoticon_happy)

ou en java java

Drawable drawableCompat = ContextCompat.getDrawable(getContext(), R.drawable.ic_emoticon_happy)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X