Estoy tratando de crear una vista de desplazamiento vertical que aparezca en la mitad superior de la pantalla, la mitad inferior tendrá algunos botones.

Tengo un diseño lineal vertical con dos diseños lineales verticales dentro de él (el superior que contiene la vista de desplazamiento) y he establecido que cada uno de los dos diseños lineales tenga un peso de diseño de 1, pero la vista de desplazamiento se extiende más allá de la mitad de la página, independientemente.

<LinearLayout
    android:id="@+id/mainlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:background="@drawable/b_whitetrans4">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:fadeScrollbars="false"
            android:scrollbarThumbVertical="@android:color/holo_red_dark">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="5dp"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/settingtext"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="asdfasdfasdfasdfasdf"
                    android:textColor="@android:color/white"
                    android:textSize="20sp" />

            </LinearLayout>

        </ScrollView>
    </LinearLayout>

    <LinearLayout
        android:layout_weight="1"
        android:id="@+id/buttonlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">


    </LinearLayout>


</LinearLayout>

Curiosamente, la vista de desplazamiento no se extiende para mostrar todo el contenido, pero definitivamente es más de la mitad de la pantalla. Esto es lo que pasa: https://www.screencast.com/t/VPHJwPhpLyb

1
texas techie 213 8 sep. 2018 a las 20:44

3 respuestas

La mejor respuesta

Al usar el peso en diseños lineales, es recomendable usar la altura (si la orientación es vertical) y el ancho (si la orientación es horizontal) = 0dp. En su caso, es vertical. Intenta hacer eso.

<LinearLayout
android:id="@+id/mainlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:orientation="vertical">

<LinearLayout
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginBottom="10dp"
    android:background="@drawable/b_whitetrans4">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:fadeScrollbars="false"
        android:scrollbarThumbVertical="@android:color/holo_red_dark">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="5dp"
            android:orientation="vertical">

            <TextView
                android:id="@+id/settingtext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="asdfasdfasdfasdfasdf"
                android:textColor="@android:color/white"
                android:textSize="20sp" />

        </LinearLayout>

    </ScrollView>
</LinearLayout>

<LinearLayout
    android:layout_weight="1"
    android:id="@+id/buttonlayout"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="vertical">


</LinearLayout>
0
Ishan Gupta 8 sep. 2018 a las 18:18

Tal vez pueda intentar establecer el padre de los diseños como RelativeLayout, luego usar alignParentTop / alignParentBottom en lugar de layout_weight en sus LinearLayouts

https://developer.android.com/guide/topics/ui/layout/relative

0
keyboard_kracker22 8 sep. 2018 a las 17:53

Establezca la altura de LinearLayout superior en match_parent y elimine el atributo layout_weight en el inferior.

0
TheWanderer 8 sep. 2018 a las 17:46