2012-12-04 24 views
7

Tôi có một hộp thoại tùy chỉnh với một bố cục như thế này:thoại tùy chỉnh Android với scrollview đẩy nút tắt màn hình

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

Vấn đề của tôi là scrollview là khi có quá nhiều văn bản trong scrollview, các các nút dưới đây được đẩy ra khỏi hộp thoại. Tôi đã có thể ngăn chặn nó bằng cách neo RelativeLayout có chứa các nút ở phía dưới bằng cách sử dụng android: layout_alignParentBottom = "true", nhưng tôi kéo dài toàn bộ hộp thoại đến cuối màn hình khi có ít văn bản trong scrollview và Tôi không muốn điều đó.

Làm thế nào tôi có thể nhận được một bố cục như thế này:

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

Thử khắc phục sự chiều cao của bố cục chính như 300dip –

+0

Tôi không muốn để sửa chiều cao của bố trí chính vì nó cần phải được thay đổi kích thước trên kích thước màn hình khác nhau và định hướng –

Trả lời

6

Hãy thử LinearLayout thay vì RelativeLayout Đặt các nút trong một bố cục riêng biệt và đặt một trọng lượng trên cách bố trí nút.

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

Thậm chí sử dụng một container bố trí tuyến tính với thuộc tính weight = 1, các nút vẫn bị đẩy xuống và bị cắt một nửa. Vì vậy, nó tốt hơn một chút, nhưng không phải là giải pháp hoàn chỉnh ... –

+0

cũng thay đổi bố cục trên cùng thành 'LinearLayout'. Sau đó, có một cái gì đó như thế này: cập nhật tôi đăng nó trong câu trả lời ... – Gix

+0

hm ... không có may mắn, hộp thoại vẫn trải dài ngoài màn hình và nhấn các nút để chúng được cắt một nửa. Tôi có một số lợi nhuận trên các nút và văn bản của tôi, liệu chúng có ảnh hưởng đến tính toán bố cục không? –

1

Mặc dù câu hỏi là loại cũ ở đây là những gì đã giúp trong trường hợp của tôi. Hy vọng điều này có thể giúp đỡ người khác vì nó đã cho tôi khá một thời gian để xuống dấu vết.

alertDialogBuilder.setMessage(null); 
+0

Câu hỏi được hỏi về hộp thoại tùy chỉnh chứ không phải hộp thoại cảnh báo. – Pkmmte

Các vấn đề liên quan