在 Android 中以编程方式更改 ImageView 的图像

新手上路,请多包涵

当我以编程方式更改图像时,它会在最初在布局文件中设置的旧图像之上显示新图像?

这是我的布局文件的片段:

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

以及设置 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);

                       }
                   });

我错过了什么?

原文由 user1529412 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 526
2 个回答

发生这种情况是因为您正在设置 ImageView 的 src 而不是背景。

改用这个:

 qImageView.setBackgroundResource(R.drawable.thumbs_down);

是一个讨论两种方法之间差异的线程。

原文由 Voicu 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果上述解决方案不起作用,只需从 XML 中删除这一整行

android:src="@drawable/image"

&只尝试

imageView.setBackgroundResource(R.drawable.image);

原文由 H A Tanim 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题