tutorial studio propiedades programacion pantalla móviles horizontal español deslizante desarrollo curso aplicaciones android scrollview

studio - propiedades scrollview android



sin gravedad para scrollview. cómo hacer contenido dentro de scrollview como centro (6)

Quiero que el contenido dentro de scrollView sea el centro.

<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:layout_gravity="center" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="check" android:gravity="center_vertical|center_horizontal"/> </ScrollView>

Nota: no hay android:gravity atributo de android:gravity para scrollvew.

cualquier sol: -


¿Qué tal esto?

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="12dp" android:paddingBottom="20dp" android:scrollbarStyle="outsideOverlay" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="center" android:gravity="center"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="check" android:gravity="center_vertical|center_horizontal"/> </LinearLayout> </ScrollView>


Creo que una solución más elegante sería usar la propiedad android:fillViewport . Un ScrollView es un poco diferente en la forma en que trata su contenido (solo puede tener uno), incluso si establece match_parent ( fill_parent ) en ScrollView , no le dará mucho espacio a su vista de contenido, sino que el comportamiento predeterminado es ScrollView para envolver el contenido independientemente de lo que especifique para esa vista. Lo que hace android:fillViewport es decirle a ScrollView que android:fillViewport su contenido para llenar la ventana gráfica ( http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport ). Entonces, en este caso, su LinearLayout se LinearLayout para que coincida con la ventana LinearLayout y si la altura va detrás de la ventana gráfica, entonces será desplazable, ¡que es exactamente lo que quiere!

La respuesta aceptada no funcionará correctamente cuando el contenido se extienda más allá de ScrollView porque aún centrará primero la vista de contenido, lo que cortará una parte de la vista, y ScrollView centrado en otro diseño funcionará pero no se sentirá bien. , además creo que también dará como resultado un error de pelusa (padre inútil o algo así).

Pruebe algo como esto:

<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>

Solo recuerda que la razón por la que ahora se centra aquí es debido a la android:gravity en LinearLayout ya que ScrollView LinearLayout así que LinearLayout en cuenta dependiendo de lo que agregas al diseño.

Otra buena lectura en ScrollView aunque no se trata de centrar, sino de fillViewport es http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/


Para @Patrick_Boss - lo que detuvo el contenido de corte en mi aplicación fue cambiar la gravedad y la distribución_gravedad a center_horizontal para LinearLayout.

Me funcionó ... pero no estoy seguro si funcionará para ti.

Modificación de la respuesta de @Ghost -

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="12dp" android:paddingBottom="20dp" android:scrollbarStyle="outsideOverlay" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="center_horizontal" android:gravity="center_horizontal"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="check" android:gravity="center_vertical|center_horizontal"/> </LinearLayout> </ScrollView>


Tuve el mismo problema y finalmente lo descubrí. Esto es para una vista de ScrollView vertical.

Coloque su ScrollView dentro de RelativeLayout y céntrelo en RelativeLayout . Para que esto funcione, tu ScrollView debería tener

android:layout_height="wrap_content"

Así es como debería verse el código final:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ScrollView android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_parent" android:layout_height="wrap_content" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="b1"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="b2"/> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="b3"/> </LinearLayout> </ScrollView> </RelativeLayout>


Una cosa a considerar es qué NO establecer. Asegúrese de que los controles de su hijo, especialmente los controles EditText, no tengan configurada la propiedad RequestFocus. Esta puede ser una de las últimas propiedades interpretadas en el diseño y anulará la configuración de gravedad en sus padres (el diseño o ScrollView).


Use este atributo en ScrollView

android:fillViewport="true"

Ejemplo

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbarStyle="outsideOverlay" android:fillViewport="true" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <!--Your Code goes here--> </RelativeLayout> </ScrollView>

Asegúrese de usar Single Child en ScrollView como en el ejemplo anterior que es Relativelayout.