Позициониране на ListView във FrameLayout

Така че аз се опитвам да създам екран, който има ListView и над него трябва да мога да преместя друг персонализиран хоризонтален ListView, точно в долния край на екрана. Когато потребителят превърта във вертикалния списъчен изглед, хоризонталният ще стане невидим и ще се появи отново, когато превъртането спре. Реших, че FrameLayout ще бъде най-добрият ми залог за припокриващи се изгледи. Но изглежда не мога да накарам това да работи. Хоризонталният изглед на списък изглежда заема цялото пространство на екрана. Някакви идеи? Това дори правилният подход ли е? Искам да имам нещо подобно на фиксиран div в HTML.
Ето моя XML:

АКТУАЛИЗАЦИЯ-1: Използван е RelativeLayout, както е предложено, но все още не може. Изглежда, че HorizontalListView все още заема целия екран. Използвам HorizintalListView от тук

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView
        android:id="@+id/messages" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_marginTop="5dip" />


    <RelativeLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <test.ui.app.HorizontalListView 
                android:id="@+id/folders"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:background="#FFFFFF" />

    </RelativeLayout>



</RelativeLayout>

person HungryTux    schedule 20.10.2011    source източник


Отговори (3)


Накарах го да работи, като сам зададох височината на вътрешното относително оформление, вместо да използвам „wrap_content“.

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView
        android:id="@+id/messages" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" />


    <RelativeLayout 
        android:layout_width="wrap_content" 
        android:layout_height="80dip"
        android:layout_alignParentBottom="true" >

        <test.ui.app.HorizontalListView 
                android:id="@+id/folders"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:background="#FFFFFF" />

    </RelativeLayout>



</RelativeLayout>
person HungryTux    schedule 24.10.2011

Не можете да коригирате изгледите без FrameLayout. Така че ще е по-добре за вас да изберете RelativeLayout. Или можете да поставите списъците си в RelativeLayout или linearlayout и след това можете да коригирате.

Надявам се това да ви помогне. :)

person Android Killer    schedule 20.10.2011

Както каза другият отговарящ, можете да използвате RelativeLayout:

  • задайте android:layout_alignParentLeft|Right|Top|Bottom="true" за вертикалния изглед на списък
  • задайте android:layout_alignParentLeft|Right|Bottom="true" за хоризонталния изглед на списък (и височина на "wrap_content" или фиксиран размер)

Или ако много искате да се придържате към FrameLayout (може би от съображения за производителност...), можете просто да добавите огромен android:layout_marginTop към изгледа на хоризонтален списък. Но това решение е по-грозно, тъй като трябва да зададете точни стойности. Например, ако целият екран е с височина 320dp и искате хоризонталният списъчен изглед да бъде с височина 80dp, трябва да зададете горното поле на 240dp. Ако обаче стартирате това на екран с различно съотношение, хоризонталният изглед на списък ще бъде грозен.

person Pal Szasz    schedule 20.10.2011
comment
Актуализирах оформлението, за да използвам RelativeLayouts, но изглежда също не помага. Ще експериментирам с него още малко. Хваща ли ви нещо окото в актуализираното оформление? - person HungryTux; 21.10.2011