android - 使用 ActionButton 样式更改图标 ImageView 的波纹颜色

标签 android android-layout

我正在尝试将波纹效果的颜色更改为白色(而不是默认的深灰色)。

每个ImageView都有style="@style/Widget.AppCompat.ActionButton"来实现涟漪效果。

我尝试过应用 tint/backgroundtint/在 styles.xml 中创建自定义样式 - 没有一个对颜色有影响涟漪。

当前效果示例:

Action button example of ripple effect

布局文件:

<?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/item_detail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#333333"
        >
        <ImageView
            android:id="@+id/info_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_info_outline_white_24dp"
            style="@style/Widget.AppCompat.ActionButton"
            android:clickable="true"
            android:focusable="true"
            app:layout_constraintVertical_chainStyle="spread"
            app:layout_constraintRight_toLeftOf="@+id/share_btn"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

        <ImageView
            android:id="@+id/share_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_share_white_24dp"
            style="@style/Widget.AppCompat.ActionButton"
            android:clickable="true"
            android:focusable="true"
            app:layout_constraintVertical_chainStyle="spread"
            app:layout_constraintStart_toEndOf="parent"
            app:layout_constraintEnd_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

        <ImageView
            android:id="@+id/delete_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_delete_white_24dp"
            style="@style/Widget.AppCompat.ActionButton"
            android:clickable="true"
            android:focusable="true"
            app:layout_constraintVertical_chainStyle="spread"
            app:layout_constraintLeft_toRightOf="@id/share_btn"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

最佳答案

您可以创建这样的主题:

<style name="RippleColorTheme" parent="Widget.AppCompat.ActionButton">
    <item name="colorControlHighlight">@color/yourRippleColor</item>
</style>

并将此主题应用到您的 ImageView ,如下所示:

<ImageView
    ...
    android:theme="@style/RippleColorTheme" />

这应该会改变特定 View 上波纹效果的颜色。

关于android - 使用 ActionButton 样式更改图标 ImageView 的波纹颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59424160/

相关文章:

android - 从不同的 Activity 访问共享首选项 (Android)

android - 如何在android中查看错误堆栈跟踪?

java - 如果我不需要可滚动功能,请替换 RecyclerView?

android - 如何从上下文中获取应用程序

android - 让 Android AnimatorSet 停止动画

android - ANR 错误 - 屏幕关闭 - 我应该如何处理它们?

java - 如何在 onClick 事件触发时更改 Fragment?

java - 选择/取消选择时如何更改单选按钮的背景颜色/形状

android - 如何膨胀自定义 View 类?

android - 如何在键盘处于 Activity 状态时使布局可滚动?