Попробуйте следующее:
ширина: 100%; box-size: border-box;
Когда вы пишете 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. Для этого вы можете переработать ответ из здесь .
Благодаря 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>
Вам не нужно использовать файл с градиентным рисунком или установить его в xml .. вы можете сделать это прагматично, используя класс GradientDrawable
, как описано в этом связанном вопросе (. Создавать радиальный градиент программным путем ) затем установите его как фон для макета, который охватывает ваш ImageView, это дает вам возможность использовать разные цвета и ориентации
Я бы использовал FrameLayout или RelativeLayout. Первый вид, который вы добавляете в оба, должен быть фоновым ImageView, тогда, очевидно, вам понадобятся некоторые текстовые элементы и другие ImageViews [или кнопки или кнопки изображения и т. Д.]
Похоже на разумный макет: фоновое изображение, а затем еще один вид в каждом углу.
Для градиента вам, вероятно, понадобится отдельный макет / представление внизу с градиентом, который можно отрисовать в качестве фона, хотя я могу представить, что вы можете уйти с установкой фона одного из ваших TextViews в качестве градиента.