Eu acho que uma solução mais elegante seria usar o ScrollView
's android:fillViewport
propriedade. A ScrollView
é um pouco diferente na forma como trata sua visualização de conteúdo (só pode ter uma), mesmo se você definir match_parent
( fill_parent
) como ScrollView
, não dará tanto espaço para sua visualização de conteúdo, em vez disso, o comportamento padrão é ScrollView
envolver o conteúdo, independentemente do que você especificar para essa exibição. O que android:fillViewport
faz é dizer ao ScrollView
para esticar seu conteúdo para preencher a janela de visualização ( http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport ). Portanto, neste caso, seu LinearLayout
seria esticado para coincidir com a janela de visualização e se a altura ficar atrás da janela de visualização, então será rolável, o que é exatamente o que você deseja!
A resposta aceita não funcionará corretamente quando o conteúdo se estender além de ScrollView
porque ainda centralizará a visualização do conteúdo primeiro, fazendo com que corte uma parte da visualização, e ScrollView
centralizado em outro layout funciona, mas não parece certo, além do Acho que também resultará em um erro de lint (pai inútil ou algo parecido).
Experimente algo assim:
<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>
Apenas lembre-se de que o motivo pelo qual ele está sendo centralizado agora é por causa do android:gravity
no, LinearLayout
já que o ScrollView
esticará, LinearLayout
então tenha isso em mente dependendo do que você adicionar ao layout.
Outra boa leitura, ScrollView
embora não sobre centralização, mas sobre, fillViewport
é http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/