以编程方式更改ImageView 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); } }); 

我错过了什么?

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

用这个代替:

 qImageView.setBackgroundResource(R.drawable.thumbs_down); 

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

在XML中使用:

 android:src="@drawable/image" 

来源用途:

 imageView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.your_image)); 

在您的图像视图的XML中,你有android:background="@drawable/thumbs_down将其更改为android:src="@drawable/thumbs_down"

目前它将该图像作为背景放置在视图中,而不是其中的实际图像。

 qImageView.setImageResource(R.drawable.img2); 

我认为这会帮助你

在XMLdevise中

 android:background="@drawable/imagename android:src="@drawable/imagename" 

通过代码绘制图像

 imageview.setImageResource(R.drawable.imagename); 

服务器映像

 Glide.with(context).load(url) .placeholder(R.drawable.image) .into(imageView); Picasso.with(context).load(url) .placeholder(R.drawable.image) .into(imageView);