Min height fill_parent и height wrap_content в ScrollView? (или просто приложение электронной почты составляет код макета)
Вопрос Если у меня есть следующее:
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:layout_width="fill_parent" android:layout_height="?" android:orientation="vertical">
<EditText android:layout_width="fill_parent" android:layout_height="?" android:hint="Subject" android:id="@+id/subject" />
<EditText android:layout_width="fill_parent" android:layout_height="?" android:id="@+id/body" />
</LinearLayout>
</ScrollView>
Как я могу получить тело (второй EditText), чтобы заполнить оставшуюся часть экрана, но все же у вас есть scrollview, когда содержимое тела слишком длинное? Как a height="wrap_content"
и minHeight="fill_parent"
layout_height="fill_parent"
кажется, ничего не делает, если вы поместите их в scrollview
Рабочий пример того, что я хочу, - это приложение электронной почты, создающее окно
Я пробовал это, и элементы EditText действуют так, как будто они являются wrap_content, и заполнение не происходит. Просто прокрутка, если вы набираете достаточно
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<EditText android:layout_width="fill_parent" android:layout_height="fill_parent" layout_weight="1" android:hint="Subject" android:id="@+id/subject" />
<EditText android:layout_width="fill_parent" android:layout_height="fill_parent" layout_weight="1" android:id="@+id/body" />
</LinearLayout>
</ScrollView>
Ответы
Ответ 1
Я столкнулся с ссылкой на исходный код почтового приложения в мой принятый ответ по другому вопросу. Ответ прост! Добавьте android:fillViewport="true"
в <ScrollView...>
и добавьте android:layout_weight="1.0"
в представление, которое вы хотите использовать для всего доступного пространства. объясняется в этом blogspot
Ответ 2
Как упоминалось выше, правильный способ - использовать атрибут android: fillViewport = "true".
Вот пример, где изображение будет располагаться в и scrollView:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:orientation="vertical">
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="test"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/red">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/about_us_image_1_land"
style="@style/layout_marginTop20"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
Ответ 3
Почему вы не делаете ScrollView как fill_parent, а A и B - wrap_content?
Единственное, что вы хотите, это то, что ваш ScrollView подходит к экрану.
Ответ 4
после вызова
AlertDialog dialog = builder.show();
затем вызовите fixScrollViewHeight (Scrollview);
private void fixScrollViewHeight (ScrollView scrollView) {
int screenHeight = activity.getWindowManager(). getDefaultDisplay(). getHeight();
LayoutParams lp = scrollView.getLayoutParams();
lp.height = screenHeight/3;
scrollView.setLayoutParams(ПОЛ);
}