Это не слишком сложно создать макет, как показано на схеме строк для ListView
. Я просто помогу тебе по пути. Имейте в виду, что вы, возможно, захотите сделать некоторые улучшения, например, не жестко задайте размер «квадратов», а предоставите их от dimens.xml
в разных кодах плотности и плотности экрана.
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical">
<View android:layout_width="30dp" android:layout_height="30dp"
android:layout_margin="5dp" android:background="@drawable/border_color_red" />
<TextView android:layout_width="?android:attr/listPreferredItemHeight"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@drawable/border" android:gravity="center"
android:text="QTY" android:textAppearance="?android:attr/textAppearanceMedium" />
<RelativeLayout android:layout_width="0dp"
android:layout_height="?android:attr/listPreferredItemHeight"
android:layout_marginLeft="5dp" android:layout_marginRight="5dp"
android:layout_weight="1" android:background="@drawable/border"
android:gravity="center_vertical" android:padding="5dp">
<TextView android:id="@android:id/text1"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_toLeftOf="@+id/star"
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox android:id="@+id/star" style="?android:attr/starStyle"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_toLeftOf="@+id/box_right"
android:text=" " />
<View android:id="@+id/box_right" android:layout_width="30dp"
android:layout_height="30dp" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_margin="5dp"
android:background="@drawable/border_color_red" />
</RelativeLayout>
</LinearLayout>
ListView
необходимо, чтобы скрыть свой делитель:
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:divider="@null">
<!-- Preview: [email protected]/list_item_layout -->
</ListView>
Границы добавляются с помощью простой ShapeDrawable
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:height="1dp" android:width="1dp" android:color="#000" />
<solid android:color="@android:color/transparent" />
</shape>
Измените solid
цвет, чтобы создать цвет отличается заливки (например, для квадратов).
Результат будет выглядеть примерно так:
Самым большим недостатком является то, что есть на самом деле не простой подход, чтобы избавиться от «двойных» делителей Inbetween различных строк. Если это вас действительно беспокоит, существует определенная пара способов, которыми вы могли бы обойти их (например, раздувать различные макеты для первого и последнего элементов в вашем адаптере или добавлять первый и последний элемент в виде верхнего и нижнего колонтитула или выставлять строки в отдельные виды, которые вы можете переключить и т. д.).
Я не добавлял в ImageView
, так как это будет довольно понятно. Поместите его в том же положении, что и «item» TextView
, и переключайтесь между ними в зависимости от того, хотите ли вы отображать текст или изображение.
Я предполагаю, что вы сможете подобрать подходящий Adapter
(и «ViewHolder»/«RowWrapper») для макета.
Оставьте линию, если что-то еще не ясно. :)
Взгляните на мое сообщение, я решил эту проблему http://stackoverflow.com/questions/10811192/how-to-add-header-in-listview-at-specific-location-and-create -custom-view-for-li/10811630 # 10811630 –
Спасибо; Я посмотрю на это. – user702426