如何禁用涟漪效应?

Rak*_*ena 3 xml android android-layout ripple

我有一个布局ConstraintLayout有多个子项,其中一个子项具有连锁反应

\n\n
\n
(android:foreground="attr/selectableItemBackground")\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

和我的父母ConstraintLayout也有同样的连锁反应。我的问题是,如果父项已经具有涟漪效应,如何禁用子项涟漪效应,或者我们可以使用任何有条件的方式来禁用涟漪效应。

\n\n

当我单击父项时,它会显示波纹父项和子项。

\n\n
 <android.support.constraint.ConstraintLayout\n    android:id="@+id/investment_pack_item_container"\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    android:background="?attr/selectableItemBackground"\n    android:onClick="@{(v) -> handlers.onClick(v, obj)}">\n\n    <android.support.v7.widget.AppCompatImageView\n        android:id="@+id/logo_iv"\n        android:layout_width="@dimen/margin_70dp"\n        android:layout_height="@dimen/margin_70dp"\n        android:layout_marginStart="@dimen/padding_layout"\n        android:layout_marginLeft="@dimen/padding_layout"\n        android:layout_marginTop="@dimen/padding_layout"\n        app:imgUrl="@{obj.imageUrl}"\n        app:layout_constraintLeft_toLeftOf="parent"\n        app:layout_constraintTop_toTopOf="parent"\n        app:placeHolder="@{@drawable/bg_grey_rectangle_rounded_corner}"\n        app:shapeType="@{2}"\n        tools:src="@tools:sample/avatars" />\n\n    <include\n        android:id="@+id/ivp_item_category"\n        layout="@layout/ivp_item_category_returns_recycler_item"\n        android:layout_width="0dp"\n        android:layout_height="wrap_content"\n        app:layout_constraintLeft_toRightOf="@+id/logo_iv"\n        app:layout_constraintRight_toRightOf="parent"\n        app:obj="@{obj}"\n        app:type="@{Constants.OTHER_PACKS}" />\n\n    <android.support.constraint.Barrier\n        android:id="@+id/barrier_ivp_1"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        app:barrierDirection="bottom"\n        app:constraint_referenced_ids="ivp_item_category,logo_iv" />\n\n    <android.support.v7.widget.AppCompatImageView\n        android:id="@+id/logo_icon"\n        android:layout_width="@dimen/icon_height_width_xxsmall"\n        android:layout_height="@dimen/icon_height_width_xxsmall"\n        android:src="@mipmap/ic_launcher"\n        app:imgUrl="@{obj.createdBy.imageUrl}"\n        app:layout_constraintBottom_toBottomOf="@+id/created_by"\n        app:layout_constraintLeft_toLeftOf="@+id/logo_iv"\n        app:layout_constraintTop_toTopOf="@+id/created_by"\n        app:placeHolder="@{@drawable/bg_grey_rectangle_rounded_corner}"\n        app:shapeType="@{2}"\n        tools:src="@tools:sample/avatars" />\n\n    <android.support.v7.widget.AppCompatTextView\n        android:id="@+id/created_by"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginStart="@dimen/padding_layout_8dp"\n        android:layout_marginLeft="@dimen/padding_layout_8dp"\n        android:layout_marginTop="@dimen/margin_4dp"\n        android:layout_marginBottom="@dimen/padding_layout"\n        android:text="@{obj.createdBy.name}"\n        android:textColor="@color/text_color_dark_grey"\n        android:textSize="@dimen/text_size_very_small"\n        app:layout_constraintBottom_toBottomOf="parent"\n        app:layout_constraintHorizontal_bias="0"\n        app:layout_constraintLeft_toRightOf="@+id/logo_icon"\n        app:layout_constraintRight_toLeftOf="@+id/risk_image"\n        app:layout_constraintTop_toBottomOf="@+id/barrier_ivp_1"\n        tools:text="Aditya Birla Mutual Fund" />\n\n    <android.support.v7.widget.AppCompatImageView\n        android:id="@+id/risk_image"\n        android:layout_width="@dimen/margin_16dp"\n        android:layout_height="@dimen/margin_16dp"\n        android:layout_marginRight="@dimen/padding_layout_8dp"\n        app:imgSrc="@{RiskView.getRiskImage(obj.riskType.id)}"\n        app:layout_constraintBottom_toBottomOf="@+id/risk_type"\n        app:layout_constraintEnd_toStartOf="@+id/risk_type"\n        app:layout_constraintTop_toTopOf="@+id/risk_type"\n        app:placeHolder="@{@drawable/bg_grey_rectangle_rounded_corner}"\n        tools:src="@drawable/ic_transaction" />\n\n    <android.support.v7.widget.AppCompatTextView\n        android:id="@+id/risk_type"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginLeft="@dimen/padding_layout_8dp"\n        android:layout_marginRight="@dimen/padding_layout"\n        android:includeFontPadding="false"\n        android:text="@{obj.riskType.displayName}"\n        android:textColor="@color/text_color_dark_grey"\n        android:textSize="@dimen/text_size_very_small"\n        app:layout_constraintRight_toRightOf="parent"\n        app:layout_constraintTop_toTopOf="@+id/logo_icon"\n        tools:text="Moderate" />\n\n</android.support.constraint.ConstraintLayout>\n
Run Code Online (Sandbox Code Playgroud)\n\n

包括布局

\n\n
<android.support.constraint.ConstraintLayout\n    android:id="@+id/lyt_category_returns_item"\n    android:layout_width="match_parent"\n    android:layout_height="wrap_content"\n    android:clickable="@{!type.equals(Constants.OTHER_PACKS)}"\n    android:foreground="?attr/selectableItemBackground"\n    android:onClick="@{(v) -> handlers.onClick(v, obj)}"\n    android:padding="@dimen/padding_layout">\n\n    <TextView\n        android:id="@+id/scheme_name"\n        android:layout_width="match_parent"\n        android:layout_height="wrap_content"\n        android:drawableEnd="@drawable/ic_forward"\n        android:drawableRight="@drawable/ic_forward"\n        android:drawablePadding="@dimen/margin_6dp"\n        android:text="@{obj.fundName}"\n        android:textColor="@color/text_color_black"\n        android:textSize="@dimen/text_size_small"\n        tools:text="Aditya Birla Mutual Fund" />\n\n    <TextView\n        android:id="@+id/fund_category_2"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginTop="@dimen/padding_4dp"\n        android:background="@drawable/rounded_corner_light_grey_bg"\n        android:clickable="false"\n        android:gravity="center"\n        android:paddingLeft="@dimen/padding_layout_8dp"\n        android:paddingTop="@dimen/padding_4dp"\n        android:paddingRight="@dimen/padding_layout_8dp"\n        android:paddingBottom="@dimen/padding_4dp"\n        android:text="@{obj.fundCategory}"\n        android:textColor="@color/text_color_dark_grey"\n        android:textSize="@dimen/text_size_xs_small"\n        android:visibility="@{obj.fundCategory != null ? View.VISIBLE : View.GONE}"\n        app:layout_constraintTop_toBottomOf="@+id/scheme_name"\n        tools:visibility="gone" />\n\n    <android.support.v7.widget.AppCompatTextView\n        android:id="@+id/minimum_investment_header"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginTop="@dimen/padding_layout_8dp"\n        android:text="@string/minimum_investment"\n        android:textColor="@color/text_color_grey"\n        android:textSize="@dimen/text_size_very_small"\n        app:layout_constraintEnd_toStartOf="@+id/category_returns_header"\n        app:layout_constraintHorizontal_bias="0.5"\n        app:layout_constraintHorizontal_chainStyle="spread_inside"\n        app:layout_constraintStart_toStartOf="parent"\n        app:layout_constraintTop_toBottomOf="@+id/fund_category_2" />\n\n    <TextView\n        android:id="@+id/minimum_investment_value"\n        style="@style/currencyTextStyle"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginTop="@dimen/padding_layout_4dp"\n        android:text="@{Apputility.getFormattedPrice(obj.minimumInvestment.doubleValue(), true, 0)}"\n        android:textColor="@color/text_color_black"\n        android:textSize="@dimen/text_size_small"\n        app:layout_constraintLeft_toLeftOf="@+id/minimum_investment_header"\n        app:layout_constraintTop_toBottomOf="@+id/minimum_investment_header"\n        tools:text="\xe2\x82\xb9 1000" />\n\n    <android.support.v7.widget.AppCompatTextView\n        android:id="@+id/category_returns_header"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:text="@{type.equals(Constants.OTHER_PACKS)?@string/schemes:@string/allocation}"\n        android:textColor="@color/text_color_grey"\n        android:textSize="@dimen/text_size_very_small"\n        app:layout_constraintEnd_toStartOf="@+id/returns_header"\n        app:layout_constraintStart_toEndOf="@+id/minimum_investment_header"\n        app:layout_constraintTop_toTopOf="@+id/minimum_investment_header"\n        tools:text="@string/schemes" />\n\n    <android.support.v7.widget.AppCompatTextView\n        android:id="@+id/allocation_percentage"\n        style="@style/currencyTextStyle"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginTop="@dimen/padding_4dp"\n        android:text="@{type.equals(Constants.OTHER_PACKS)?``+obj.schemeCount:``}"\n        android:textColor="@color/text_color_black"\n        android:textSize="@dimen/text_size_small"\n        app:layout_constraintBottom_toBottomOf="parent"\n        app:layout_constraintLeft_toLeftOf="@+id/category_returns_header"\n        app:layout_constraintTop_toBottomOf="@+id/category_returns_header"\n        tools:text="60"\n        tools:visibility="visible" />\n\n    <com.ui.common.CategoryReturnProgressView\n        android:id="@+id/category_return_range"\n        android:layout_width="0dp"\n        android:layout_height="0dp"\n        android:layout_marginLeft="@dimen/padding_2dp"\n        android:layout_marginEnd="@dimen/margin_30dp"\n        android:layout_marginRight="@dimen/margin_30dp"\n        app:categoryReturn="@{obj.allocation}"\n        app:layout_constraintBottom_toBottomOf="@+id/allocation_percentage"\n        app:layout_constraintLeft_toRightOf="@+id/allocation_percentage"\n        app:layout_constraintRight_toLeftOf="@+id/returns_header"\n        app:layout_constraintTop_toTopOf="@+id/allocation_percentage"\n        app:min="@{obj.allocation}"\n        app:visibility="@{!type.equals(Constants.OTHER_PACKS)}"\n        tools:visibility="gone" />\n\n    <android.support.v7.widget.AppCompatTextView\n        android:id="@+id/returns_header"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:text="@{(obj.bucket != null)?obj.bucket:@string/returns}"\n        android:textColor="@color/text_color_grey"\n        android:textSize="@dimen/text_size_very_small"\n        app:layout_constraintEnd_toEndOf="parent"\n        app:layout_constraintHorizontal_bias="0.5"\n        app:layout_constraintStart_toEndOf="@+id/category_returns_header"\n        app:layout_constraintTop_toTopOf="@+id/minimum_investment_header"\n        tools:text="Returns"\n        tools:visibility="visible" />\n\n    <TextView\n        android:id="@+id/returns_value"\n        style="@style/currencyTextStyle"\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:layout_marginTop="@dimen/padding_layout_4dp"\n        android:maxLines="1"\n        android:minEms="3"\n        android:textSize="@dimen/text_size_small"\n        app:layout_constraintRight_toRightOf="parent"\n        app:layout_constraintTop_toBottomOf="@+id/returns_header"\n        app:return="@{obj.returns}"\n        app:returnColor="@{obj.returns}"\n        tools:text="+36.23%" />\n\n</android.support.constraint.ConstraintLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

小智 9

您可以使用具有透明颜色的自定义样式:

<style name="noRipple" parent="Theme.MaterialComponents">
    <item name="rippleColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并在您的视图中设置:

style="@style/noRipple"
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

  • OP 不想在单击父视图时触发子波纹。这样不就让子波纹彻底消失了吗? (2认同)