RecyclerView正在全屏显示一条消息

时间:2017-09-26 08:02:10

标签: android android-layout android-recyclerview

我正在制作聊天屏幕的布局,其中我使用RecyclerView来显示用户发送和接收的消息,但我面临的问题是RecyclerView在整个屏幕中只显示一条消息并且看到我有的其他消息向下滚动或向上滚动。我想垂直显示彼此旁边的消息。 这是我的xml代码: -

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/chatparent"
    android:background="@color/background">
    <include layout="@layout/chattoolbar"/>





    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_messages"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:scrollbars="vertical"
        android:scrollbarStyle="outsideOverlay"/>


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom">




   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content">




            <FrameLayout
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="0.80"
                android:background="@color/colorPrimary" />

            <FrameLayout
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="0.20"
                android:background="@color/black"/>

   </LinearLayout>


        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/rl_typing"
            android:background="@drawable/chatbox"
            android:orientation="horizontal"
            android:paddingLeft="5dp"
            android:paddingRight="10dp"
            android:layout_marginStart="15dp"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="2dp"
            >


            <Button
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@drawable/ic_emoticons"
                android:layout_marginTop="8dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:gravity="bottom"
                android:id="@+id/btn_emoji"
                />



            <EditText
                android:layout_width="190dp"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:minLines="1"
                android:maxLines="20"
                android:lines="8"
                android:imeActionId="@+id/send"
                android:imeActionLabel="actionSend"
                android:imeOptions="actionSend"
                android:scrollbars="vertical"
                android:textColor="@color/monsoon"
                android:textColorHint="@color/dark_gray"
                android:id="@+id/et_message"
                android:textSize="13sp"
                android:hint=" Type Your Message Here..."
                android:layout_toEndOf="@id/btn_emoji"
                tools:ignore="HardcodedText" />



            <Button
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@drawable/ic_attachment"
                android:layout_marginTop="8dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:gravity="bottom"
                android:id="@+id/btn_attach"
                android:layout_toEndOf="@id/et_message"/>


            <Button
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@drawable/ic_camera"
                android:layout_marginTop="8dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:id="@+id/btn_camera"
                android:layout_toEndOf="@id/btn_attach"/>


        </RelativeLayout>

        <Button
            android:layout_width="30dp"
            android:layout_height="35dp"
            android:id="@+id/btn_send"
            android:layout_alignParentTop="true"
            android:layout_marginTop="7.5dp"
            android:layout_centerHorizontal="true"
            android:layout_marginStart="3dp"
            android:layout_toEndOf="@id/rl_typing"
            android:background="@drawable/ic_send" />




    </RelativeLayout>
</LinearLayout>

这是recyclerView_item.xml: -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="5dp"
    android:paddingTop="5dp"
    android:paddingLeft="10dp">


    <TextView
        android:id="@+id/username"
        style="?android:textAppearanceMedium"
        android:textColor="?android:textColorPrimary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textStyle="bold"/>

   <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
       android:orientation="vertical">


    <TextView
        android:id="@+id/txtOther"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:textColor="@color/black"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:background="@drawable/chat_in"/>

    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/chat_out"
        android:paddingBottom="5dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="5dp"
        android:textColor="@color/white"
        android:textSize="16dp" />

       <TextView
           android:id="@+id/lblDate"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:textSize="12dp"
           android:textColor="@color/colorprimarylight"
           android:textStyle="italic"
           android:padding="5dp"
           />

</LinearLayout>



</LinearLayout>

以下是截图,您可以在其中查看两条消息之间产生的空间大小。Screenshot

3 个答案:

答案 0 :(得分:5)

设置recyclerview项目的主要布局高度“wrap_content”

答案 1 :(得分:2)

在recyclerView的子视图中,将xml root设置为“wrap_content”。如果你设置了一个标志match_parent,它将占用所有空间,你需要滚动你的父视图。

答案 2 :(得分:0)

在recyclerView_item.xml中,您必须设置&#39; main&#39; LinearLayout的高度和宽度match_parent到wrap_content