Подтвердить что ты не робот

Оверлей над ImageView на Android

Итак, у меня есть список изображений, которые поступают из Интернета, я не знаю, какой цвет они, и я хочу поместить текст через ImageView.

Моя идея - разместить ImageView, наложение изображений с градиентом прозрачности над этим ImageView и над ним над текстом. Я хочу подражать этому поведению:

enter image description here

Есть ли способ сделать это через XML?

4b9b3361

Ответ 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, это дает вам возможность использовать разные цвета и ориентации.