2013-09-06 29 views
6

Hoạt động chính của tôi có một số nút, vừa với nhau trên màn hình Tablet lớn, nhưng không nằm trên màn hình Điện thoại nhỏ hơn. Tôi đã thêm một scrollview, do đó người dùng có thể di chuyển xuống các nút khác nếu kích thước màn hình đòi hỏi nó:ScrollView thêm không gian lớn ở cuối

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:background="@drawable/bg" 
      android:gravity="center_horizontal"> 

    <TextView 
     android:id="@+id/trackSelectorText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"/> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"     
      android:gravity="center_horizontal"> 

     <Button      
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="foo" /> 
     <!-- More buttons --> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

này kinda hoạt động, tuy nhiên tôi có một khoảng trống lớn bên dưới nút cuối cùng (tức là scrollview thể cuộn xuống quá xa). Cả hai trên một máy tính bảng thực tế và trên giả lập với một cấu hình điện thoại. Nếu tôi center LinearLayout bên trong (thay vì center_horizontal), khoảng cách này được truyền đều giữa đầu và cuối, mà tôi không muốn cả hai. Làm cách nào để sửa bố cục này?

Tôi hy vọng hình ảnh này rõ ràng hơn, hãy tưởng tượng rằng ScrollView đã được cuộn xuống hoàn toàn và hiển thị các nút cuối cùng. Các không gian trống tôi muốn nói là một trong những dưới đây Nút 6 vào hình ảnh bên phải:

enter image description here

+0

Bạn có thể vẽ những gì bạn muốn? – Shark

+0

Xong, tôi hy vọng điều này giúp dễ dàng hình dung hơn. – Lennart

+0

thử đưa ra 'ScrollView'' android: layout_height = "match_parent" '. Tôi nghi ngờ không gian là bên trong scrollview nhưng thực sự dưới đây –

Trả lời

10

Trên thực tế, nó đã không thực sự liên quan đến việc bố trí (trừ khi tôi đang thiếu một cái gì đó). Tôi đã cố gắng bình luận ra nền tảng, và nó đột nhiên làm việc. Hình nền được chụp (@drawable/bg) đơn giản là quá lớn và gây ra sự di chuyển. Tôi đã chuyển đổi hình nền thành hình ảnh 9-bit, do đó, nó có thể được thu nhỏ tự động, và voilà, không gian bổ sung đã biến mất. Tuy nhiên, nếu điều này có thể đạt được mà không có bản vá 9, tôi vẫn muốn được nghe nếu điều này có thể được thực hiện trong tệp XML.

1

Tôi đã kiểm tra với code..Work của tôi một cách hoàn hảo:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="@drawable/bg" 
     android:gravity="center_horizontal"> 

<TextView 
    android:id="@+id/trackSelectorText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal"/> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"     
     android:gravity="center_horizontal"> 

    <Button      
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="foo" /> 
    <!-- More buttons --> 
    </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

Có thể Giúp bạn. ...... !!

+0

Và sự khác biệt với mã gốc là gì? –

8

Thử thêm thuộc tính này vào phần tử ScrollView của bạn. android: fillViewport = "true"

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:fillViewport="true" > ... </ScrollVIew> 

Ref: ScrollView Ref

+1

android: layout_height = "match_parent" phải được đổi thành android: layout_height = "0dp" – Mieszko

1

bạn có thể sử dụng thuộc tính này trong scrollview để tránh extra padding ở cuối xem

android:overScrollMode="never" 
Các vấn đề liên quan