Android LinearLayout с двумя ListViews

1

Я пытаюсь создать LinearLayout с двумя Listviews и не вижу второго Listview. В примере вы увидите, что я хотел бы иметь изображение, затем заголовок (для первого списка), а затем ListView. За этим должен следовать другой заголовок (для второго списка), а затем второй ListView. Я хочу, чтобы оба ListViews прокручивали и не влияли друг на друга. По сути, идея состоит в том, что пользователь может прокручивать два разных списка. Это прекрасно работает с одним ListView, и только сегодня я заметил, что у меня давно забытый Relativelayout (RelativeLayout01), который, кажется, ничего не делает.

<?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="fill_parent"
android:background="@drawable/bkgrnd"
android:orientation="vertical" >

<ImageView
    android:id="@+id/test_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center"
    android:paddingBottom="30sp"
    android:paddingTop="30sp"
    android:src="@drawable/title" />

<RelativeLayout
    android:id="@+id/RelativeLayout01"
    android:layout_width="716sp"
    android:layout_height="wrap_content" >
</RelativeLayout>

<TextView
    android:id="@+id/ title1_head"
    android:layout_width="fill_parent"
    android:layout_height="60sp"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:text="@string/ title1_head"
    android:textColor="#ffffff"
    android:textSize="12pt" />

<RelativeLayout
    android:id="@+id/RelativeLayout02"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal" >

    <ListView
        android:id="@+id/ListView_Menu"
        android:layout_width="716sp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:divider="@drawable/divider"
        android:listSelector="@drawable/textured" >
    </ListView>
</RelativeLayout>

<TextView
    android:id="@+id/title2_head"
    android:layout_width="fill_parent"
    android:layout_height="60sp"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:text="@string/title2_head"
    android:textColor="#ffffff"
    android:textSize="12pt" />

<RelativeLayout
    android:id="@+id/RelativeLayout03"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal" >

    <ListView
        android:id="@+id/ListView1_Menu"
        android:layout_width="716sp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:divider="@drawable/divider"
        android:listSelector="@drawable/textured" >
    </ListView>
</RelativeLayout>

  • 0
    На самом деле, все ваши относительные макеты ничего не делают. Вы должны удалить их. Вложенный макет плохо влияет на производительность
  • 0
    Относительные макеты, которые обертывают первый вид списка, используют android: layout_height = "fill_parent", который уничтожает весь экран и выталкивает все остальные элементы позади него из экрана. да, простое решение - удалить все относительные макеты.
Теги:

2 ответа

1
Лучший ответ

То, что, по-видимому, происходит, - это первый ListView который делает то же, что вы сказали, и заполняя все доступное пространство, и вы делаете Layout более сложным. Используйте только 1 LinearLayout и используйте android:weight="0" для заголовков и не ListView views and android:weight="1" для ваших просмотров ListView. Вес поможет вам контролировать высоту представлений ListView.

Если вам нужен более подробный контроль над каждой группой заголовков и их перенос в их собственный LinearLayout и постарайтесь не накладывать вес на содержимое этого макета, так как это может повлиять на производительность.

  • 0
    все выглядело хорошо в портретной, но не очень хорошо в ландшафте - вернулся к одному списку. Спасибо за ответы, я кое-что узнал, но в итоге это не стало хорошей реализацией для пользователя.
1

Это будет иметь два списка просмотров бок о бок

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView
                android:id="@+id/test_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_gravity="center"
                android:paddingBottom="30sp"
                android:paddingTop="30sp"
                android:src="@drawable/title" />

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <LinearLayout 
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical" >


            <TextView
                android:id="@+id/title1_head"
                android:layout_width="fill_parent"
                android:layout_height="60sp"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                android:text="title1"
                        android:text="@string/title1_head"
                android:textColor="#ffffff"
                android:textSize="12pt" />

            <ListView
                android:id="@+id/ListView_Menu"
                android:layout_width="716sp"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                    android:divider="@drawable/divider"
                    android:listSelector="@drawable/textured" />
        </LinearLayout>

        <LinearLayout 
            android:layout_width="0dip"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/title2_head"
                android:layout_width="fill_parent"
                android:layout_height="60sp"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                        android:text="@string/title2_head"
                android:text="title2"
                android:textColor="#ffffff"
                android:textSize="12pt" />

            <ListView
                android:id="@+id/ListView1_Menu"
                android:layout_width="716sp"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                    android:divider="@drawable/divider"
                    android:listSelector="@drawable/textured" />
        </LinearLayout>

    </LinearLayout>
</LinearLayout>

Это все еще довольно уродливо из-за вложенных макетов. RelativeLayout может оказаться лучше. Я могу переработать это позже, но пока это выполнит то, что вам нужно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню