?attr/selectableItemBackgroundBorderless 在工具栏 Android Studio 内的 ImageView 中不起作用

Posted

技术标签:

【中文标题】?attr/selectableItemBackgroundBorderless 在工具栏 Android Studio 内的 ImageView 中不起作用【英文标题】:?attr/selectableItemBackgroundBorderless doesn't work in ImageView inside Toolbar Android Studio 【发布时间】:2021-10-25 05:43:43 【问题描述】:

我正在尝试在 Toolbar 内的 ImageView 中使用

android:foreground="?attr/selectableItemBackgroundBorderless"
android:clickable="true"

但是当我运行应用程序时,输出看起来像?attr/selectableItemBackground。然后我试图将Toolbar 更改为RelativeLayout。可以,但我需要使用 Toolbar 而不是 RelativeLayout。

我也在尝试使用android:background="?attr/selectableItemBackgroundBorderless"。但是如果我使用android:background,就不会产生连锁反应。这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:layout_
    android:layout_
    android:background="@color/colorGrey"
    tools:context=".User.BottomNavigationView.Student.StudentDetailActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/student_detail_app_bar_layout"
        android:layout_
        android:layout_
        android:fitsSystemWindows="true"
        android:theme="@style/ActionBarTextColor">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/student_detail_collapsing_toolbar"
            android:layout_
            android:layout_
            android:fitsSystemWindows="true"
            app:contentScrim="@color/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:title="Detail Siswa">

            <ImageView
                android:id="@+id/student_detail_profile_picture_image_view"
                android:layout_
                android:layout_
                android:scaleType="centerCrop"
                android:src="@drawable/img1"
                app:layout_collapseMode="parallax" />

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/student_detail_toolbar"
                android:layout_
                android:layout_
                app:layout_collapseMode="pin">

                <ImageView
                    android:id="@+id/student_detail_back_button_image_view"
                    android:layout_
                    android:layout_
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="32dp"
                    android:clickable="true"
                    android:foreground="?attr/selectableItemBackgroundBorderless"
                    android:padding="3dp"
                    android:src="@drawable/general_back_button"
                    app:tint="@color/colorPrimaryIcon" />

            </androidx.appcompat.widget.Toolbar>

        </com.google.android.material.appbar.CollapsingToolbarLayout>

    </com.google.android.material.appbar.AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:layout_
        android:layout_
        android:background="@color/colorGrey"
        app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">

    </androidx.core.widget.NestedScrollView>
    
</androidx.coordinatorlayout.widget.CoordinatorLayout>

我想在 Toolbar 内的 ImageView 中使用 ?attr/selectableItemBackgroundBorderlesscircular ripple effect。我该怎么做?

【问题讨论】:

【参考方案1】:

添加 focusable 确实会起作用

android:focusable="true"

下面我添加了可点击和可聚焦的代码

android:foreground="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"

【讨论】:

可以了,但我还是得到了矩形波纹效果。我希望它是一个圆圈波纹 我认为你在 android:src="" 中使用矢量资源和 assinging,替换为 android:backgrund 并尝试一下。

以上是关于?attr/selectableItemBackgroundBorderless 在工具栏 Android Studio 内的 ImageView 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章