Подтвердить что ты не робот

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

Ответ 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(ПОЛ);
  }