我正在尝试从现有的Android消息应用程序重现布局。我使用带有自定义适配器的列表视图和#34;发送消息"部分。它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp" >
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/sendMsgLayout"
android:overScrollMode="always"
android:stackFromBottom="true"
android:layout_alignParentTop="true" >
</ListView>
<RelativeLayout
android:id="@+id/sendMsgLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="20dp"
android:layout_marginBottom="5dp" >
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider" />
<EditText
android:id="@+id/messageText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toLeftOf="@+id/imageSend"
android:hint="@string/type_message"
android:maxLines="3" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/imageSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/messageText"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:src="@drawable/send" />
</RelativeLayout>
这是我最新版本的布局,我还使用LinearLayout作为父级,列表视图的权重设置为1。
编辑文字最多有3行。当一行不足以保存文本并且编辑文本增长时,就会出现问题。它涵盖了列表视图的一部分。 我想我应该在编辑文本的尺寸增长时滚动列表视图,但我无法实现。
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
试试此代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:orientation="vertical" >
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:stackFromBottom="true"
android:layout_weight="1" >
</ListView>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider" />
<LinearLayout
android:id="@+id/sendMsgLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="20dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/messageText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:hint="@string/type_message"
android:maxLines="3" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/imageSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:src="@drawable/send" />
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="2dp"
android:orientation="vertical">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:overScrollMode="always"
android:stackFromBottom="true"
android:layout_marginBottom="5dp"/>
<LinearLayout
android:id="@+id/sendMsgLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/messageText"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="@string/type_message"
android:maxLines="3" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/imageSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/send" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:0)
将listview transcriptMode设置为normal,可选择alwaysScroll并按@andreid指出删除android:overScrollMode =&#34; always&#34;。
android:transcriptMode="normal"
或代码:
listView.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_NORMAL);