Android - 在Button上方拉伸EditText

时间:2011-10-24 05:36:02

标签: android

我想在一行按钮上方放置一个可滚动的EditText,以便文本组件填充按钮释放的所有垂直空间。事实证明这是非常困难的,尤其是因为ADT是错误的:它表明这种布局会在Eclipse中完成而不是在实际应用程序中实现!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/view1"/>
    <LinearLayout android:id="@id/view1"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <!-- buttons go here -->
    </LinearLayout>
</RelativeLayout>

在此布局中,文本会延伸到全屏,如您所料,即,它位于按钮下方,但ADT图形布局工具显示它停在按钮上方。 OTOH,如果你给它一个wrap_content高度,那么它当然不会伸展。 layout_weight也没有任何帮助。

那么,有办法吗?您必须在模拟器或真实设备上测试您的答案,而不仅仅是在Eclipse中。


精确度:是什么让我觉得这不起作用,文本小部件在按钮下延伸的是底部滚动条的形状(见下图):它应该在两端都是圆形的,而不是看起来像底部延伸得更远。如果你将它底部的形状与顶部的形状进行比较(遗憾的是我无法捕捉它:它消失的速度太快),它非常明显不同。 OTOH文本小部件边界看起来像预期的那样。这非常令人困惑。也许只是Android中的一个小错误?

enter image description here

3 个答案:

答案 0 :(得分:1)

试试这段代码:

<?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">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:inputType="textMultiLine" >

        <requestFocus></requestFocus>
    </EditText>
    <LinearLayout
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent">
        <Button
            android:text="Button"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:id="@+id/button1"
            android:layout_width="0dp"></Button>
        <Button
            android:text="Button"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:id="@+id/button2"
            android:layout_width="0dp"></Button>
        <Button
            android:text="Button"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:id="@+id/button3"
            android:layout_width="0dp"></Button>
    </LinearLayout>
</LinearLayout>

enter image description here

答案 1 :(得分:0)

这应该有效

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">   
    <LinearLayout android:id="@+id/view1" android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true">
        <Button android:text="Button" android:layout_weight="1"
            android:layout_height="wrap_content" android:id="@+id/button1"
            android:layout_width="0dp"/>
        <Button android:text="Button" android:layout_weight="1"
            android:layout_height="wrap_content" android:id="@+id/button2"
            android:layout_width="0dp"/>
        <Button android:text="Button" android:layout_weight="1"
            android:layout_height="wrap_content" android:id="@+id/button3"
            android:layout_width="0dp"/>
    </LinearLayout>
    <EditText android:id="@+id/text1" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_above="@id/view1"
        android:gravity="top"/>
</RelativeLayout>

答案 2 :(得分:0)

我用TextView和底部的Button做了同样的事情。我试着用EditText代替TextView,它对我来说很好。你可以试试这个 -

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

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="Add New Template"
        android:layout_gravity="bottom"     
        android:layout_alignParentBottom="true"/>

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/editText"
        android:layout_alignParentTop="true"
        android:layout_above="@id/add_acronym"
    />
</RelativeLayout>

这是快照 -

enter image description here