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

一切都很好,除非当消息超过两行时,名为etMessage的EditText将其下方的btnSend按钮压扁到几乎看不见的细线。我想要做的是让etMessage将其上方的ScrollView向上推。我可能将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>

最佳答案

我已经更正了布局。需要注意的是,对于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>

08-17 16:27