Макет Макет не работает внутри ScrollView
Я хочу назначить веса макета нескольким элементам внутри LinearLayout
внутри ScrollView
. Однако ScrollView
игнорирует LinearLayout
weightSum
.
Моя цель состоит в том, чтобы разделить макет с весами 2, 1, 1 (на общую сумму 4), но это не работает должным образом внутри ScrollView
.
Как я могу решить эту проблему с макетом?
main.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="4">
<LinearLayout android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="2"
android:background="#FFFFFF" />
<LinearLayout android:id="@+id/logo1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1"
android:background="#000000" />
<LinearLayout android:id="@+id/logobutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
android:background="#4B4B4B" />
</LinearLayout>
</ScrollView>
Ответы
Ответ 1
Я столкнулся с этой проблемой раньше. Просто используйте android:fillViewport="true"
в вашем scrollview, и он заполнит экран.
<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:fillViewport="true" >
Ответ 2
Это не сработает, как вы это сделали. Детский вид ScrollView должен быть установлен на wrap_content
. Если вы установите его на fill_parent
, он заполнит область ScrollView и никогда не будет прокручиваться, потому что она не будет больше, чем ScrollView.
Идея layout_weight
заключается в пропорциональном заполнении определенной области.
Вы должны установить все дочерние LinearLayouts layout_height
либо на wrap_content
, либо на определенный размер (в dp), а родительский LinearLayout layout_height
to wrap_content
Как сказано, вам нужно удалить дополнительные
XMLNS: андроид = "http://schemas.android.com/apk/res/android"
если это не корневой (первый) элемент макета.