Android - 消息传递应用程序布局

时间:2014-08-14 09:09:45

标签: android android-layout android-listview android-edittext

我正在尝试从现有的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。

Layout picture

编辑文字最多有3行。当一行不足以保存文本并且编辑文本增长时,就会出现问题。它涵盖了列表视图的一部分。 我想我应该在编辑文本的尺寸增长时滚动列表视图,但我无法实现。

Overlap picture

关于如何解决这个问题的任何想法?

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);
相关问题