我有这个ShapeableImageView
我想处理点击事件但没有看起来很糟糕的涟漪效应,因为容器和按钮一样小,并且没有空间让效果很好地扩展。所以,我想禁用它以获得不同的自定义效果。
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/button_round"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:adjustViewBounds="true"
android:src="@drawable/dw_image"
android:scaleType="centerCrop"
android:contentDescription="@string/button_round"
android:focusable="false"
android:clickable="false"
android:foreground="?android:attr/selectableItemBackground"
android:background="@null"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:shapeAppearanceOverlay="@style/Theme.MyApp.RoundCorner"
app:strokeWidth="2dp"
app:strokeColor="@color/timber_green" />
我像这样处理点击
findViewById<ShapeableImageView>(R.id.button_profile).setOnClickListener { view ->
(view as ShapeableImageView).setStrokeColorResource(R.color.tasman)
}
我的问题是,即使我设置了focusable
and clickable
as false
,似乎设置点击侦听器也会启用涟漪效应。我可以让点击监听器没有那种效果吗?
奇怪的是,设置android:background
成我自己的涟漪效果文件,它不起作用,效果仍然是默认的。
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/timber_green" android:radius="12dp">
<item
android:id="@android:id/mask"
android:drawable="@android:color/holo_red_dark" />
</ripple>
<!-- in my layout -->
android:background="@drawable/ripple_effect"