Я думаю, что более элегантное решение было бы использовать в ScrollView
«S android:fillViewport
собственности. A ScrollView
немного отличается в том, как он обрабатывает свое представление содержимого (может иметь только один), даже если вы установили match_parent
( fill_parent
) в, ScrollView
он не будет давать такой большой интервал для его представления содержимого, вместо этого поведение по умолчанию заключается в том, ScrollView
чтобы обернуть контент независимо от того, что вы указали для этого представления. Что android:fillViewport
означает, что ScrollView
нужно растянуть содержимое, чтобы заполнить область просмотра ( http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport ). Итак, в этом случае ваш LinearLayout
будет растянут, чтобы соответствовать области просмотра, и если высота будет позади области просмотра, тогда она будет прокручиваемой, что именно то, что вы хотите!
Принятый ответ не будет работать должным образом, когда контент выходит за пределы, ScrollView
потому что он по-прежнему будет ScrollView
центрировать представление содержимого, сначала заставляя его отрезать часть представления, а центрирование в другом макете работает, но просто не кажется правильным, кроме того Я думаю, что это также приведет к ошибке lint (бесполезный родитель или что-то в этом роде).
Попробуйте что-то вроде этого:
<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>
Просто помните, что причина, по которой он сейчас центрируется здесь, заключается в android:gravity
том, LinearLayout
что он ScrollView
будет растягиваться, LinearLayout
поэтому имейте это в виду в зависимости от того, что вы добавляете в макет.
Еще один хороший читать дальше , ScrollView
хотя и не о сосредоточении , а о fillViewport
является http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/