下面粘贴的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>