所以我有一个来自网络的图像列表,我不知道它们是哪种颜色,我想在ImageView上放置一个文本。
我的想法是将ImageView,一个带有透明度渐变的图像叠加层放在ImageView及其上方的文本上。我想模仿这种行为:
无论如何都是通过XML来做到这一点吗?
答案 0 :(得分:20)
当您为列表项目编写XML时,您在getView(...)
编写的任何ListAdapter
中都会夸大其词,您肯定可以这样做。
列表项的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="320dp"
android:layout_height="240dp"
android:background="#ACACAC"/>
<RelativeLayout
android:layout_width="320dp"
android:layout_height="240dp"
android:background="@drawable/gradient">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Here is your text"
android:textColor="#000000"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
</RelativeLayout>
然后创建可绘制/渐变。为此,您可以从here回收答案。
答案 1 :(得分:4)
感谢 adityajones 我设法到达那里:) 因此,虽然这是我的正确答案,但我会将其标记为正确答案!
<?xml version="1.0" encoding="utf-8"?>
<ImageView
android:layout_width="fill_parent"
android:layout_height="200dp"
android:scaleType="centerCrop"
android:src="@drawable/image" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="200dp"
android:background="@drawable/gradient_image" >
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_margin="6dp"
android:layout_marginBottom="18dp"
android:shadowColor="#000"
android:shadowRadius="7.0"
android:text="This is some random text"
android:textColor="@color/white"
android:textSize="22sp" />
</RelativeLayout>
答案 2 :(得分:2)
我使用FrameLayout或RelativeLayout。你添加的第一个视图应该是背景ImageView,然后显然你需要一些TextViews和其他ImageViews [或按钮,或ImageButtons等]
看起来像一个合理的布局:背景图片,然后是每个角落的一个额外视图。
对于渐变,你可能想要一个单独的布局/视图,底部有一个渐变可绘制作为背景,虽然我可以想象你可以通过将一个TextView的背景设置为梯度。
答案 3 :(得分:0)
您不必使用渐变可绘制文件或在xml中设置它。
您可以使用GradientDrawable
类实际执行此操作,如相关问题(Create a radial gradient programmatically)中所述,然后将其设置为覆盖ImageView的布局的背景,这使您能够使用不同的颜色和方向< / p>