2012-12-04 4 views
7

Mam okno niestandardowy z układem jak ten:android zwyczaj dialogowe z Scrollview naciska przyciski z ekranu

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/mylayout"> 
    <LinearLayout 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <TextView ... /> 
     <TextView .../> 
    </LinearLayout> 
    <ScrollView 
     android:id="@+id/scrollView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/title"> 
     <LinearLayout ...> 
      <TextView ... 
       android:text="lots of text........" /> 
      <TextView .../> 
     </LinearLayout> 
    </ScrollView 
    <RelativeLayout ... 
    android:layout_below="@+id/scrollView"> 
    <Button ...> 
    <Button ...> 
    </RelativeLayout> 
</RelativeLayout> 

Moim problemem jest to, że Scrollview jest to, że gdy nie ma zbyt dużo tekstu w Scrollview The poniższe przyciski są wypychane w dół z okna dialogowego. Udało mi się temu zapobiec przez zakotwiczenie RelativeLayout, który zawiera przyciski na dole za pomocą androida: layout_alignParentBottom = "true", ale ja rozciągam całe okno dialogowe na dół ekranu, gdy w przewijanym wierszu jest mniej tekstu Nie chcę tego.

Jak mogę dostać układ tak:

[SOME TEXT] 
[Scrollable region] 
[Buttons] 
+0

Spróbuj ustalające wysokość głównego układu jak 300dip –

+0

Nie chcę, aby ustalić wysokość głównego układu, ponieważ musi być skalowalny w różnych rozmiarach i orientacjach –

Odpowiedz

6

Spróbuj LinearLayout zamiast RelativeLayout umieścić przyciski w oddzielnym układzie i umieścić ciężar na układ przycisków.

LinearLayout - top level start, android:layout_weight="0" 
LinearLayout with TextViews embeded, android:layout_weight="1" 
LinearLayout with ScrollView embeded, android:layout_weight="1" 
LinearLayout with Buttons embeded, android:layout_weight="1" 
LinearLayout - top level finish, android:layout_weight="0" 
+0

Nawet stosując liniowy układ z kontenera atrybut weight = 1, przyciski są nadal naciskane i odcinane w połowie. Więc jest trochę lepiej, ale nie jest to kompletne rozwiązanie ... –

+0

zmienić także górny układ na "LinearLayout". Następnie wpisz coś takiego: update Opublikowaliśmy to w odpowiedzi ... – Gix

+0

hm ... bez powodzenia, okno dialogowe nadal rozciąga się poza ekran i naciska przyciski, aby je odciąć. Mam trochę marginesów na przyciskach i tekście, czy wpłynęłoby to na obliczenia układu? –

1

Mimo, że pytanie jest trochę stare, to pomogło w moim przypadku. Mam nadzieję, że to może pomóc innym, ponieważ zajęło mi to sporo czasu.

alertDialogBuilder.setMessage(null); 
+0

Pytanie dotyczące niestandardowego okna dialogowego, a nie okna alertu. – Pkmmte