我正在尝试在图像的顶部和底部向图像视图添加渐变。我不想在图像视图的顶部添加textview。我该如何实现它?
答案 0 :(得分:4)
看起来你的简单而干净的解决方案是使用FrameLayout包装ImageView并使用前景属性,如下所示:
布局
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@drawable/gradient">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/male"/>
</FrameLayout>
渐变以防万一
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#33000000"
android:centerColor="@android:color/transparent"
android:endColor="#33000000"
android:angle="90"/>
</shape>
产生这个:
FrameLayout是一种相对简单的结构,不会增加视图层次结构的复杂性,例如,相对于RelativeLayout,这将导致额外的测量。
如果您必须避免添加任何额外的包装器视图,那么您的下一个选项是创建一个CustomView,从ImageView扩展并覆盖onDraw()方法,并使用渐变位图的像素手动覆盖现有画布。