Tôi nghĩ rằng một giải pháp thanh lịch hơn sẽ sử dụng ScrollView
's android:fillViewport
tài sản. A ScrollView
có một chút khác biệt về cách nó xử lý chế độ xem nội dung (chỉ có thể có một), ngay cả khi bạn đặt match_parent
( fill_parent
) thành ScrollView
nó sẽ không cung cấp nhiều khoảng cách như vậy cho chế độ xem nội dung, thay vào đó, hành vi mặc định là ScrollView
để bao bọc nội dung bất kể những gì bạn chỉ định cho chế độ xem đó. Điều gì android:fillViewport
có nghĩa là ScrollView
kéo dài nội dung của nó để lấp đầy khung nhìn ( http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport ). Vì vậy, trong trường hợp này, của bạn LinearLayout
sẽ được kéo dài để phù hợp với khung nhìn và nếu chiều cao vượt ra sau khung nhìn thì nó sẽ có thể cuộn được chính xác là những gì bạn muốn!
Câu trả lời được chấp nhận sẽ không hoạt động đúng khi nội dung mở rộng ra ngoài ScrollView
vì nó vẫn sẽ căn giữa chế độ xem nội dung trước tiên khiến nó cắt bỏ một phần của chế độ xem và căn ScrollView
giữa trong một bố cục khác hoạt động nhưng cảm thấy không ổn, bên cạnh đó Tôi nghĩ rằng nó cũng sẽ dẫn đến một lỗi lint (cha mẹ vô dụng hoặc một cái gì đó dọc theo những dòng đó).
Hãy thử một cái gì đó như sau:
<ScrollView
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="12dp"
android:paddingBottom="20dp"
android:scrollbarStyle="outsideOverlay"
android:fillViewport="true">
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="check" />
</LinearLayout>
</ScrollView>
Chỉ cần nhớ rằng lý do nó đang được làm trung tâm ở đây bây giờ là vì android:gravity
trên LinearLayout
kể từ khi ScrollView
sẽ căng LinearLayout
để giữ cho rằng trong tâm trí phụ thuộc vào những gì bạn thêm vào cách bố trí.
Tốt khác đọc trên ScrollView
mặc dù không phải về trung nhưng về fillViewport
là http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/