如何仅在 TableRow 项目的图像按钮上设置波纹效果 android
How to set ripple effect only on image button of TableRow item android
我想在图像按钮上添加自定义波纹效果。但是如果我改变背景,它会在图像后面显示颜色效果。另外,我设置了 table-row 和 image-button wrap content 但仍然找不到解决方案。
请帮我只在图像按钮上设置波纹效果,而不是在 space.
之外
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
>
<ImageButton
android:id="@+id/ess_btn_leave"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/leave"
android:background="?android:attr/selectableItemBackground"
/>
<ImageButton
android:id="@+id/ess_imgbtn_expence"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:background="@null"
android:src="@drawable/expence"
/>
</TableRow>
将此 .xml 添加到您的可绘制文件夹
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:drawable="@drawable/button_normal" />
</ripple>
并将其用作 imageButton 的背景以获得涟漪效果。
来自https://developer.android.com/training/material/animations.html
和
尝试
<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
试试这个方法
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_button"
android:background="?attr/selectableItemBackgroundBorderless"
/>
试试这个解决方案:-
在 xml
的父布局中添加以下行:-
android:descendantFocusability="blocksDescendants"
在ImageButton中设置-
android:background="@drawable/grid_ripple_effect"
grid_ripple_effect.xml
in that change color as per your need.
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/light_green"
tools:targetApi="lollipop">
<item android:id="@android:id/mask">
<shape android:shape="rectangle" android:left="-2dp" android:right="-2dp" android:top="-2dp">
<stroke android:width="1dip" android:color="#CABBBBBB" />
<corners android:radius="2dp" />
<solid android:color="@color/light_green" />
</shape>
</item>
</ripple>
你可以使用
android:foreground="?attr/selectableItemBackground"
在您的图像视图上。
默认纹波
对于自定义波纹,您需要创建两个文件
在您的 drawable-v21 中创建一个文件 - background_ripple.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_shortAnimTime"
android:color="@color/lightGrey" >
<item>
<shape android:shape="rectangle" >
<solid android:color="@color/white" />
</shape>
</item>
在 21 以上版本的正常绘图中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<color android:color="@color/lightGrey" />
</item>
<item>
<color android:color="@color/white" />
</item>
</selector>
并在图像视图上执行 android:foreground="@drawable/background_ripple.xml
。
我想在图像按钮上添加自定义波纹效果。但是如果我改变背景,它会在图像后面显示颜色效果。另外,我设置了 table-row 和 image-button wrap content 但仍然找不到解决方案。 请帮我只在图像按钮上设置波纹效果,而不是在 space.
之外<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
>
<ImageButton
android:id="@+id/ess_btn_leave"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@drawable/leave"
android:background="?android:attr/selectableItemBackground"
/>
<ImageButton
android:id="@+id/ess_imgbtn_expence"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:background="@null"
android:src="@drawable/expence"
/>
</TableRow>
将此 .xml 添加到您的可绘制文件夹
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:drawable="@drawable/button_normal" />
</ripple>
并将其用作 imageButton 的背景以获得涟漪效果。
来自https://developer.android.com/training/material/animations.html
和
尝试
<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>
试试这个方法
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_button"
android:background="?attr/selectableItemBackgroundBorderless"
/>
试试这个解决方案:-
在 xml
的父布局中添加以下行:-
android:descendantFocusability="blocksDescendants"
在ImageButton中设置-
android:background="@drawable/grid_ripple_effect"
grid_ripple_effect.xml
in that change color as per your need.
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/light_green"
tools:targetApi="lollipop">
<item android:id="@android:id/mask">
<shape android:shape="rectangle" android:left="-2dp" android:right="-2dp" android:top="-2dp">
<stroke android:width="1dip" android:color="#CABBBBBB" />
<corners android:radius="2dp" />
<solid android:color="@color/light_green" />
</shape>
</item>
</ripple>
你可以使用
android:foreground="?attr/selectableItemBackground"
在您的图像视图上。
默认纹波
对于自定义波纹,您需要创建两个文件
在您的 drawable-v21 中创建一个文件 - background_ripple.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_shortAnimTime"
android:color="@color/lightGrey" >
<item>
<shape android:shape="rectangle" >
<solid android:color="@color/white" />
</shape>
</item>
在 21 以上版本的正常绘图中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<color android:color="@color/lightGrey" />
</item>
<item>
<color android:color="@color/white" />
</item>
</selector>
并在图像视图上执行 android:foreground="@drawable/background_ripple.xml
。