【发布时间】:2023-03-10 14:45:02
【问题描述】:
我有一个 RecyclerView,它有一个 ImageView,因为它是 ViewHolder。我想在我单击的 ImageView 周围添加一个白色边框。由于所有这些状态都非常令人困惑(按下、选择、聚焦),所有这些状态都可能意味着相同的事情,我想问一下这个具体情况..
这是适配器的 ViewHolder xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_margin="10dp"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.myproject.RoundRectCornerImageView
android:id="@+id/imageHolder"
android:layout_width="56dp"
android:layout_height="56dp"
android:background="@drawable/image_details_selector"
android:clickable="true"
android:scaleType="centerCrop"
android:src="@drawable/thumbnail"
android:focusable="true" />
这是我正在使用的选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_selected="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke android:width="4dp" android:color="#fff" />
<padding android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp" />
</shape>
</item>
<item android:state_pressed="false" android:state_selected="false">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke android:width="1dp" android:color="@android:color/transparent" />
<padding android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp" />
</shape>
</item>
所以我在这里要做的是,在水平 RecyclerView 中有一个图像列表,如果我单击其中一个图像,它将在自身周围出现这个白色边框,而所有其他 ImageView 都不会。我实现了 onClick 侦听器,它在后台加载图像并且它正在工作,但我无法让这个选择器像我想要的那样工作。有什么想法吗?
【问题讨论】:
-
好的,我在这里看到了问题,但让我们澄清一个案例。如果您有一个选中的项目(带白色边框)并单击另一个,您是否希望第一个变为无边框?
-
是的!另外,如果我的 ImageView 是 56x56 dp,这个选择器也应该有 56x56 的大小吗?或 58x58 例如,如果我将其笔画宽度设置为 2dp?
-
没关系。用于背景的选择器就像颜色一样。所以你必须为你的 imageview 指定 padding 来为 imageview 中的 src 图像做偏移。
标签: android android-layout android-recyclerview android-imageview android-viewholder