2012-12-04 19 views
7

ich einen benutzerdefinierten Dialog mit einem Layout wie dieses:android individuelle Dialog mit Scroll drückt Tasten aus dem Bildschirm

<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> 

Mein Problem ist, dass die Scroll das ist, wenn es zu viel Text in der Scrollview, die Die folgenden Schaltflächen werden aus dem Dialog gedrückt. Ich konnte das verhindern, indem ich das RelativeLayout, das die Buttons enthält, mit Android: layout_alignParentBottom = "true" verankere, aber ich dehne den gesamten Dialog bis zum unteren Bildschirmrand, wenn weniger Text in der Bildlaufleiste und Ich will das nicht.

Wie kann ich ein Layout wie diese:

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

Versuchen Sie, die Höhe des Haupt Layout Befestigung wie 300dip –

+0

Ich möchte nicht über die Höhe des Haupt Layout beheben, weil es –

Antwort

6

Versuchen LinearLayout anstelle der RelativeLayout die Tasten in einem separaten Layout Setzen und ein Gewicht auf dem Tasten-Layout setzen.

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

resizable sein auf unterschiedlichen Bildschirmgrößen und Orientierungen braucht auch einen linearen Layout Behälter mit mit ein Gewicht = 1 Attribut, die Tasten sind immer noch gedrückt und sind auf halbem Weg abgeschnitten. Es ist also etwas besser, aber keine vollständige Lösung ... –

+0

ändern Sie das oberste Layout zu 'LinearLayout' auch. Dann habe so etwas wie: update ich gepostet in der Antwort ... – Gix

+0

hm ... kein Glück, der Dialog erstreckt sich immer noch über den Bildschirm hinaus und drückt die Tasten, so dass sie halb abgeschnitten sind. Ich habe einige Ränder auf meinen Knöpfen und Text, würden sie die Layoutberechnungen beeinflussen? –

1

Obwohl die Frage ist irgendwie alt hier ist, was in meinem Fall geholfen hat. Ich hoffe, dass dies anderen helfen kann, da ich eine ganze Weile gebraucht habe, um sie zu verfolgen.

alertDialogBuilder.setMessage(null); 
+0

Die Frage wurde nach einem benutzerdefinierten Dialogfeld und nicht nach einem Warndialogfeld gestellt. – Pkmmte

Verwandte Themen