我想以编程方式设置 TextView 对象的背景,但也有涟漪效应。
我可以将背景设置为android:selectableItemBackground
,但设置背景时,涟漪效果会丢失。
我还尝试将 a与in放在ImageView
一起。并将图像设置为 的背景,而不是 的图像:是的,波纹是存在的,但它似乎在图像的“后面”。TextView
FrameLayout
TextView
ImageView
我需要RippleDrawable
从位图为背景创建一个吗?我该怎么做?
我想以编程方式设置 TextView 对象的背景,但也有涟漪效应。
我可以将背景设置为android:selectableItemBackground
,但设置背景时,涟漪效果会丢失。
我还尝试将 a与in放在ImageView
一起。并将图像设置为 的背景,而不是 的图像:是的,波纹是存在的,但它似乎在图像的“后面”。TextView
FrameLayout
TextView
ImageView
我需要RippleDrawable
从位图为背景创建一个吗?我该怎么做?
我和你有同样的问题,并
android:foreground="?attr/selectableItemBackground"
在 FrameLayout 上使用它修复了它。
这是示例框架布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/more"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:foreground="?attr/selectableItemBackground">
<ImageView
android:id="@+id/discover_carousel_item_image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:scaleType="fitXY" />
</FrameLayout>
RippleDrawable 是解决方案:
RippleDrawable newImage = new RippleDrawable(
new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_pressed},
new int[]{}
},
new int[] {
getResources().getColor(R.color.ripple_material_light),
getResources().getColor(R.color.ripple_material_dark),
}),
new BitmapDrawable(getResources(), mapBitmap),
null);
textView.setBackground(newImage);