如何动态添加另一个ImageView到现有的ImageView?
问题描述:
我知道过类似的问题,但我认为我的情况有所不同。 所以我试图制作一个使用RecyclerView的播放列表,当选择了一首歌曲时,我想让包含歌曲图像的圆形图像更改为刻度线标记,同时可以在背景中看到原始图像褪色。我准备好了我的刻度图。 如何动态添加另一个ImageView到现有的ImageView?
如何动态地将此图片添加到现有的ImageView中?将背景图像放入背景方法对我来说不是一个解决方案,因为音乐图像文件是从Realm动态加载的,因此不能作为背景。
我RecyclerView项目的XML代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingRight="10dp"
android:paddingLeft="30dp"
>
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="start"
android:transitionName="albumArt"
android:id="@+id/album_art"
android:scaleType="centerCrop"
android:src="@color/colorPrimary"/>
<LinearLayout
android:layout_width="fill_parent"
android:gravity="right"
android:paddingLeft="20dp"
android:orientation="vertical"
android:layout_marginTop="20dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/data"
android:layout_width="match_parent"
android:fontFamily="sans-serif"
android:textColor="#ffffff"
android:text="Music Name"
android:textSize="17sp"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/data_album"
android:layout_width="match_parent"
android:fontFamily="sans-serif"
android:textColor="#bfe0e0e0"
android:textSize="14sp"
android:text="Music Artist"
android:layout_height="wrap_content"
/>
</LinearLayout>
我怎样才能做到这一点从动态java代码?这可以用set visibility
以某种方式完成吗?如果是的话,请解释新的方法来做到这一点,以及赞赏。
答
是的,它可以通过设置可见做。在布局文件中,您很可能需要使用相对布局,以便可以将两个图像视图完全相同。然后在视图中,您不希望一开始显示,你把它看不见,加入以下内容:
android:visibility="invisible"
再后来就当你想打开/关闭的知名度,你可以使用:
myImageView.setVisibility(View.VISIBLE);
myImageView.setVisibility(View.INVISIBLE);
答
您可以使用FrameLayout
这里放置FrameLayout
内都ImageView
S和根据病情可以让他们中的一个可见的和其他无形
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingRight="10dp"
android:paddingLeft="30dp"
>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="start"
android:transitionName="albumArt"
android:id="@+id/album_art"
android:scaleType="centerCrop"
android:src="@color/colorPrimary"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="120dp"
android:layout_height="120dp">
</ImageView>
</FrameLayout>
<LinearLayout
android:layout_width="fill_parent"
android:gravity="right"
android:paddingLeft="20dp"
android:orientation="vertical"
android:layout_marginTop="20dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/data"
android:layout_width="match_parent"
android:fontFamily="sans-serif"
android:textColor="#ffffff"
android:text="Music Name"
android:textSize="17sp"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/data_album"
android:layout_width="match_parent"
android:fontFamily="sans-serif"
android:textColor="#bfe0e0e0"
android:textSize="14sp"
android:text="Music Artist"
android:layout_height="wrap_content"
/>
</LinearLayout>
使用'LayerDrawable'类:*“一个可绘制的管理其他Drawable的数组,这些按照数组顺序绘制,因此具有最大索引的元素将被绘制在最上面。”* – pskink