我想以编程方式设置TextView对象的背景,但也会产生连锁反应。
我可以使用背景设置为android:selectableItemBackground
,但在设置背景时涟漪效果会丢失。
我还尝试将ImageView
与TextView
放在FrameLayout
中。并且将图像设置为不是TextView
的背景,而是设置为ImageView
的图像:是的,波纹在那里,但它似乎在图像的“后面”。
我是否需要从背景位图创建RippleDrawable
?我该怎么做?
答案 0 :(得分:5)
我和你有同样的问题并使用
修复它
FrameLayout上的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>
答案 1 :(得分:0)
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);