2012-12-04 162 views
7

我有這樣的佈局定製對話框:的Android定製對話框按下按鈕關閉屏幕

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

我的問題是,滾動型的是,當在滾動視圖太多的文字中,下面的按鈕被壓出對話框。我已經能夠通過使用android:layout_alignParentBottom =「true」將包含按鈕的RelativeLayout錨定到底部來阻止它,但是當scrollview中的文本較少時,我會將整個對話框拉伸到屏幕底部,並且我不想那樣。

我怎樣才能得到一個佈局是這樣的:

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

嘗試修復主要佈局在像300dip –

+0

的高度我並不想解決的主要佈局的高度,因爲它需要在不同屏幕尺寸和方向 –

回答

6

嘗試LinearLayout代替RelativeLayout把按鈕放在一個單獨的佈局,並把重量上的按鈕佈局。

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

即使用戶使用的線性佈局容器調整大小一個重量= 1的屬性,按鈕仍然被壓下並在中途切斷。所以它稍好些,但不是一個完整的解決方案... –

+0

也將頂層佈局更改爲'LinearLayout'。然後有這樣的東西:更新我發佈它的答案... – Gix

+0

嗯...沒有運氣,對話仍然延伸到屏幕之外,並推動按鈕,所以他們被切斷了一半。我的按鈕和文字有一些邊距,它們是否會影響佈局計算? –

1

即使問題是慈祥的老人在這裏是我的情況是什麼幫助。希望這可以幫助別人,因爲我花了相當長的一段時間來跟蹤。

alertDialogBuilder.setMessage(null); 
+0

提問有關自定義對話框的問題,而不是警報對話框。 – Pkmmte