Я думаю, что более элегантное решение было бы использовать в 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/