问题描述
在最近发布的Material组件ShapeableImageView上,有没有更好的方法可以在v1.2.0上实现点击效果
我不想使用前景属性,因为它在api级别23之后可用,而我当前的最低sdk级别为21。
例如android:foreground="?selectableItemBackground"
我目前唯一的解决方案是在ImageView顶部嵌套视图,但这似乎是一个糟糕的解决方案,因为要单击鼠标,我必须在其顶部添加嵌套视图。
我也考虑只使用XML而不用编码,因为我有许多ImageView网格布局。
SO上也有类似的问题,要求ImageView
和AppCompatImageView
,但这些问题要么是遗留解决方案,要么使用前台前景的API级别23或第三方库。
下面是我的布局,该布局将在RecyclerView
内部用作网格项
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="..."
xmlns:app="..."
xmlns:tools="..."
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/art"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:clickable="true"
android:focusable="true"
android:scaleType="centerCrop"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent"
tools:src="@tools:sample/avatars" />
<com.google.android.material.imageview.ShapeableImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:adjustViewBounds="true"
android:background="@drawable/ripple_effect"
android:clickable="true"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="@+id/art"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="@+id/art"
app:layout_constraintStart_toStartOf="@+id/art"
app:layout_constraintTop_toTopOf="@+id/art"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent" />
</androidx.constraintlayout.widget.ConstraintLayout>
以下是将ImageView变成完整圆圈的样式
<!-- CornerSize50Percent -->
<style name="ShapeAppearanceOverlay.App.CornerSize50Percent" parent="">
<item name="cornerSize">50%</item>
</style>
下面是可绘制的波纹效果
<!-- ripple_effect -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#DEFFFFFF">
<item
android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
在github上发布的链接
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)