我认为更优雅的解决方案是使用ScrollView
的android:fillViewport
属性。ScrollView
即使在将match_parent
(fill_parent
)设置为时,A 对待内容视图的方式也有所不同(只能有一个),但ScrollView
它不会为内容视图提供太大的间距,而是默认行为是将ScrollView
其包装内容,无论您为该视图指定什么内容。什么android:fillViewport
是告诉ScrollView
拉伸其内容以填充视口(http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport)。所以在这种情况下,LinearLayout
将被拉伸以匹配视口,并且如果高度在视口之后,那么它将可以滚动,这正是您想要的!
当内容扩展到之外时,可接受的答案将无法正常工作,ScrollView
因为它仍将首先使内容视图居中,从而导致该视图的一部分被切掉,并且ScrollView
而居中放置在另一个布局中,但感觉不佳,此外我认为这也会导致皮棉错误(无用的父级或类似的东西)。
尝试这样的事情:
<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/