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