如何允许EditText扩展推送对等控件

时间:2014-08-17 17:32:15

标签: android layout

下面粘贴的xml是我正在编写的应用程序的讨论页面。它的工作原理非常类似于显示消息线程,消息条目edittext和发送按钮的典型SMS消息传递应用程序。实际的线程标题框被添加到代码中名为messageScroll的LinearLayout中。

这一切都很有效,除非消息超过两行,名为etMessage的EditText会将其下方的btnSend按钮压缩到几乎不可见的细线。我想要做的是让etMessage将ScrollView推到它上面。我可能会将max etMessage大约10行。

我玩布局重力和重量没有可用的结果。如果我给按钮或etMessage一个重量,它们最初会扩展得太高。

如何获得理想的结果? 谢谢,迪恩

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true" 
        android:orientation="vertical" >
    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        >
        <TextView
            android:id="@+id/tvLocate"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Talk"
            style="@style/bigtype" />

        <TextView
            android:id="@+id/tvUserName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="User Name"
            style="@style/largetype"
            android:layout_marginLeft="30dip" /> 
    </LinearLayout>     
    <ScrollView
            android:id="@+id/scroller"
            android:layout_width="fill_parent"
            android:layout_weight=".90"
            android:gravity="bottom"
            android:fillViewport="true"
            android:layout_height="0dip">

        <LinearLayout
            android:id="@+id/messageScroll"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:gravity="bottom"    
            android:orientation="vertical" >   
        </LinearLayout>     
    </ScrollView>

   <EditText 
       android:id="@+id/etMessage" 
       android:layout_marginTop="0dip"
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:maxLength="160"
       android:layout_marginLeft="10dip"
       android:layout_marginRight="10dip"
       android:inputType="textCapSentences|textMultiLine" />

    <Button
       android:id="@+id/btnSend"
       android:layout_width="wrap_content"
       android:layout_height="0dp"
       android:layout_marginTop="10dip"  
       android:onClick="btnSend_Clicked" 
       android:layout_marginBottom="5dip"
       android:enabled="true"
       android:layout_weight=".1"
       android:layout_gravity="center_horizontal"
       android:text="Send" />   

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

我已经纠正了布局。需要注意的是使用适当的布局参数和layout_weights的整数值。

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

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
        >
        <TextView
                android:id="@+id/tvLocate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Talk"
                 />

        <TextView
                android:id="@+id/tvUserName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="User Name"

                android:layout_marginLeft="30dip" />
    </LinearLayout>

    <ScrollView
            android:id="@+id/scroller"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:gravity="bottom"
            android:fillViewport="true"
            android:layout_height="0dip">

        <LinearLayout
                android:id="@+id/messageScroll"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:gravity="bottom"
                android:orientation="vertical" >
        </LinearLayout>
    </ScrollView>

    <EditText
            android:id="@+id/etMessage"
            android:layout_marginTop="0dip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:maxLength="160"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            android:inputType="textCapSentences|textMultiLine" 
            android:text="afkajfjsajf asj ajfkjaldflkasdlkf aljfjl alkdfjkja aljfdkj alkdjflajlklfjkadlfjakd alkdfjlsjf "/>

    <Button
            android:id="@+id/btnSend"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:onClick="btnSend_Clicked"
            android:layout_marginBottom="5dip"
            android:enabled="true"
            android:layout_gravity="center_horizontal"
            android:text="Send" />

</LinearLayout>