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