[Android] Wysokość ExpandableListView w LinearLayou

0

Witam, mamy problem z wysokością ExpandableListView, kiedy listę tworzę w LinearLayout. Problem polega na tym, że mam szablon kafelki zrobionej z LinearLayout, a w środku jest ExpandableListView. Wysokość kafelki (linearlayour) powinna zwiększać się w zależności od wielkości listy. Problem w tym, że lista w kafelce pokazuje się tak wielka jak wielki jest jeden nagłówek, reszta jest przewijana.

Powinno to wyglądać mniej więcej tak:
user image

Może ktoś coś doradzić, próbowałem dawać height="0dp" height="wrap_context" i miliard innych sposobów i nic nie pomogło. A może trzeba użyć czegoś innego niż LinearLayout?

0

pokaż layouta. prawdopodobnie masz gdzieś match_parent zamiast wrap_content. Albo dodajesz jakieś duże zdjęcie które "rozpycha" Ci się na cały ekran :)

0

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android1="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical" >

    <ScrollView
        android1:id="@+id/scrollView1"
        android1:layout_width="match_parent"
        android1:layout_height="match_parent"
        android:cacheColorHint="#ffffff"
        
        android:scrollingCache="false" >

        <LinearLayout
            android1:id="@+id/mainView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dp"
            android1:orientation="vertical">
        </LinearLayout>

    </ScrollView>
</LinearLayout>

lista.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />


            <ExpandableListView
                android:id="@+id/expandableListView1"
                android:layout_below="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:clickable="false"
                android:scrollbars="none" >
            </ExpandableListView>



</RelativeLayout>

lista.xml jest dodawana do mainView w activity_main.xml

Jeszcze są 2 layouty do groupy i childa listy.

W liście jest kilka GROUP (nagłówków), a lista jest pokazywana w szerokości tylko jednego nagłówka.

user image

0

tak jak masz to napisane to jasnym jest że mainView zajmie Ci tyle miejsca ile potrzebuje na 1 kafelek, bo tyle miejsca tam zadałeś (wrap_content)

Pytanie jest inne, na jakiego grzyba używasz ListView w ScrollView, masz liste przewijaną na przewijanym layoucie ?!?

Proponuję wywalić tego ScrollView i zobaczyć co wtedy wyjdzie :-)

daj znać :D

0

Chodzi oto, że tych kafelek może być kilka, wtedy owszem listy w tych kafelkach będą przewijane, ale cały screen do reszty kafelek nie.

0

jakich kafelek?

Nie rozumiem o co Ci chodzi. W każdym razie ScrollView powoduje że robi Ci się przewijany ekran, i ListView powoduje że masz przesuwany ekran. Łączysz te dwa elementy bez wyraźnego powodu. Napisz sensownie jaki efekt chcesz uzyskać to może ktoś będzie w stanie pomóc, bo szczerze powiem ja na razie nie mam pojęcia co chcesz uzyskać.

 <LinearLayout
            android1:id="@+id/mainView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="5dp"
            android1:orientation="vertical">
        </LinearLayout>

spróbuj tak wtedy ten mainView powinien się rozciągnąć na cały dostepny obszar, ale nie wiem jak duży jest ten obszar skoro znajduje się w ScrollView ?!?

0

Ma być X kafelek, które składają się z TextView i Listy. Jak nie umieszczę całości w SCROLLView to nie bede mogl przewijac w dol :) i listy robią swojego scrola.
user image

A to ma działać tak, że w liście nie ma być scrolla, tylko dla całości można w dol przewijać jak jest więcej kafelek i lista ma być zawsze o całej długości (bez swojego scrola).

0

umieść listę w liście a nie w scrollView. nigdy nie próbowałem może się uda. Tak jak teraz robisz to zawsze lista będzie wyświetlała jeden element bo na więcej nie pozwala mu wrap_content.

0

Nie da się listy w liście.

0

z ciekawości poszukałem, nie było to takie trudne. Generalnie z tego co się dowiedziałem nie należy używać ListView w ScrollView ale jeżeli już się ktoś uprze to wtedy można to podobnież zrobić tak jak w tej odpowiedzi na stacku

http://stackoverflow.com/questions/6210895/listview-inside-scrollview-is-not-scrolling-on-android/11554684#11554684

pozdro :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1