使组件填满屏幕上的所有可用空间

时间:2011-09-23 21:49:17

标签: android view

我想要这样的事情:

enter image description here

但我不知道如何调整TextView的大小,以便它获得屏幕上的所有可用空间,这些空间不受EditText或Buttons的影响。我可以在代码中或在xml中执行吗?

在XML中,我尝试将TextView放入FrameLayout,但没有区别。目前看起来像:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <FrameLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/consola"
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            android:scrollbars = "vertical"
            android:text="@string/hello"/>

    </FrameLayout>

    <EditText 
        android:id="@+id/comando"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

        <Button
            android:text="Conectar"
            android:id="@+id/boton_conectar"
            android:layout_width="wrap_content"
            android:layout_weight="0.5"
            android:layout_height="wrap_content">
        </Button>
        <Button
            android:text="Enviar"
            android:id="@+id/boton_enviar"
            android:layout_width="wrap_content"
            android:layout_weight="0.5"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
</LinearLayout>

在代码中,我只是检查按钮是否与Listeners一起推送。其中之一,在推送时,获取EditText中的文本,并将其附加到TextView。它工作,TextView变得更高,而EditText和Buttons下降一行。如果我继续追加线条,最终的EditText和Buttons就会离开屏幕。我想避免这种行为,并完成将这三个小部件粘在屏幕底部。

3 个答案:

答案 0 :(得分:2)

使用android:layout_weight=1属性,例如表单底部的按钮。这将为它分配大部分空间以及剩下的其他元素。

答案 1 :(得分:2)

这都是关于重量的。这应该给你你想要的东西:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <TextView android:text="TextView"
        android:id="@+id/textView1"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp">
    </TextView>
    <EditText android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <requestFocus></requestFocus>
    </EditText>
    <LinearLayout android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button android:text="Button"
            android:id="@+id/button1"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="0dp">
        </Button>
        <Button android:text="Button"
            android:id="@+id/button2"
            android:layout_height="wrap_content"
            android:layout_width="0dp"
            android:layout_weight="1">
        </Button>
    </LinearLayout>
</LinearLayout>

(旁注:当使用重量时,将相应的高度/宽度设置为0dp有时会出现一些奇怪的行为。)

答案 2 :(得分:0)

尝试android:fillViewport =“true”。