Оверлей над ImageView на Android
Итак, у меня есть список изображений, которые поступают из Интернета, я не знаю, какой цвет они, и я хочу поместить текст через ImageView.
Моя идея - разместить ImageView, наложение изображений с градиентом прозрачности над этим ImageView и над ним над текстом. Я хочу подражать этому поведению:
![enter image description here]()
Есть ли способ сделать это через XML?
Ответы
Ответ 1
Когда вы пишете 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>
Затем вы создаете этот drawable/gradient. Для этого вы можете переработать ответ здесь.
Ответ 2
Благодаря 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>
Ответ 3
Я бы использовал FrameLayout или RelativeLayout. Первый вид, который вы добавляете в оба, должен быть фоновым ImageView, тогда, очевидно, вам понадобятся некоторые текстовые и другие изображения (или кнопки или кнопки изображения и т.д.)
Похоже на разумный макет: фоновое изображение, а затем еще один вид в каждом углу.
Для градиента вам, вероятно, понадобится отдельный макет/представление внизу с градиентом, который можно выделить в качестве фона, хотя я могу себе представить, что вы можете уйти с настройкой фона одного из ваших текстовых элементов как градиент.
Ответ 4
Вам не нужно использовать файл с градиентным рисунком или установить его в свой xml.
вы можете сделать это прагматично, используя GradientDrawable
Класс, как описано в этом связанном Вопросе (Создать радиальный градиент программно), затем установите его как фон для макета, который охватывает ваш ImageView, это дает вам возможность использовать разные цвета и ориентации.