Necesito tener un LinearLayout
dentro de un SrollView
y que LinearLayout
debe tener un margen de la ScrollView
. Al principio, la única forma en que podía pensar para resolver ese problema era teniendo un LinearLayout
dentro de otro LinearLayout
con los márgenes establecidos en este último diseño. Ellos no funcionarían si se encuentra en el exterior LinearLayout.
Tratar de entender los márgenes en el interior de un LinearLayout ScrollView
Ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/layout_color_yellow">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</LinearLayout>
</ScrollView>
Mi pregunta es: ¿Por qué necesito hacer esto?
Si tuviera sólo una LinearLayout
no habría márgenes ...
Ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:fillViewport="true"
android:background="@color/layout_color_green">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:background="@color/layout_color_blue">
</LinearLayout>
</ScrollView>
Luego, en busca de algún problema similar, me encontré con unos diseños lo que me dio la idea de usar relleno en el ScrollView
en lugar de margen en el LinearLayout
. Esto también resuelve mi problema y no necesito un LinearLayout
dentro de otro. Es una solución más elegante.
Aún así, me gustaría entender por qué el margen simple dentro del LinearLayout
no funciona cuando está dentro de un ScrollView
. Porque funciona bien si no está dentro de un ScrollView
.
¿Alguien sabe por qué?
Pero la cosa es que los márgenes no son el único problema.Si tengo la altura 'LinearLayout' establecida en' wrap_content' y toda la altura de los niños configurada en 'match_parent', los niños de hecho serán' fill_parent', que es el valor que proviene de 'ScrollView'. Y no 'wrap_content', que es el valor de' LinearLayout', su padre directo. Este problema tampoco ocurre si uso un 'LinearLayout' dentro de otro. ¿Entonces supongo que hay más 'ScrollView' de lo que sabemos? –
Sí, por supuesto. Forzaste ese comportamiento con 'android: fillViewport =" true "'. – Knickedi
Entonces, ¿me recomiendan ir con el relleno en lugar del margen y configurar todos los elementos secundarios del 'LinearLayout' en' wrap_content'? –