ScrollView中的最小高度fill_parent和高度wrap_content? (或只是电子邮件应用程序撰写布局代码)

时间:2010-10-07 13:13:17

标签: android android-layout

问题如果我有以下内容:

<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)填充屏幕的其余部分,但是当身体的内容太长时仍然会有滚动视图?像height="wrap_content"minHeight="fill_parent"

一样 如果你把它们放在滚动视图中,

layout_height="fill_parent"似乎没有做任何事情

我想要的一个工作示例是电子邮件应用撰写窗口

我尝试了这个,而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>

4 个答案:

答案 0 :(得分:68)

我在mail app source code中遇到了my accepted answer on another question的链接。答案很简单!将android:fillViewport="true"添加到<ScrollView...>,然后将android:layout_weight="1.0"添加到您要占用所有可用空间的视图中。在blogspot

中解释

答案 1 :(得分:5)

如上所述,正确的方法是使用 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>

答案 2 :(得分:0)

为什么不将ScrollView设为fill_parent,将A和B设为wrap_content? 您唯一想要的是您的ScrollView适合屏幕。

答案 3 :(得分:0)

打电话给

AlertDialog dialog = builder.show();

然后拨打
    fixScrollViewHeight(滚动视图);

    private void fixScrollViewHeight(ScrollView scrollView){
        int screenHeight = activity.getWindowManager()。getDefaultDisplay()。getHeight();
        LayoutParams lp = scrollView.getLayoutParams();
        lp.height = screenHeight / 3;
        scrollView.setLayoutParams(LP);
    }