在ImageView

时间:2017-10-22 09:24:18

标签: java android

在list_item.xml文件中,我有一个ImageView和一个TextView。 ImageView的代码为

 <ImageView
    android:id="@+id/play"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/play"/>

在主要活动中(main_activity.java与activity_main.xml连接,它有一个ListView),当用户使用setAdapter从列表集中点击音乐(onItemClick)时,音乐播放效果很好。现在我想改变这个ImageView的图像,当音乐开始播放的时候。所以我插入了下面给出的代码:

View inflatedView = getLayoutInflater().inflate(R.layout.list_item, null);
ImageView imgchange = (ImageView)inflatedView.findViewById(R.id.play);
imgchange.setImageResource(R.drawable.pause);

但它不起作用。我也试过

android:src="@drawable/imagename"

我也试过

imgchange.setBackgroundResource(R.drawable.pause);

寻找有价值的建议,我该怎么办?或错误在哪里?

2 个答案:

答案 0 :(得分:0)

我过去遇到过类似的问题,这是因为布局没有自行更新。按照此处android redraw layout programmatically

所述更改图像后,尝试刷新视图的布局

答案 1 :(得分:0)

我会使用新的ContextCompat代替setBackgroundResource(),如下所示:

imageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.pause));

您可以将Activity作为Context传递。如果这不起作用,您还可以尝试使视图无效,这将强制重绘。