在android中创建聊天视图布局

在android中创建聊天视图布局,android,android-layout,android-custom-view,android-tablelayout,Android,Android Layout,Android Custom View,Android Tablelayout,我正在创建一个聊天应用程序,我正在考虑创建实际聊天视图的方法 我已经有了聊天窗口本身的布局,但我正在考虑如何实现聊天信息 我正在考虑创建一个表格布局,每一行都是用户的图像和聊天信息(或者气泡之类的) 有人知道如何设计和创建这些行吗 这就是我到目前为止所做的: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

我正在创建一个聊天应用程序,我正在考虑创建实际聊天视图的方法

我已经有了聊天窗口本身的布局,但我正在考虑如何实现聊天信息

我正在考虑创建一个
表格布局
,每一行都是用户的图像和聊天信息(或者气泡之类的)

有人知道如何设计和创建这些行吗

这就是我到目前为止所做的:

<?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:background="@android:color/background_light"
    android:orientation="vertical"
    android:weightSum="10" >

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1" >

        <TableLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:stretchColumns="1" >

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <!-- insert chat message here !-->

            </TableRow>

            <View
                android:layout_height="2dip"
                android:background="#000" />

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                 <!-- next chat message --!>

            </TableRow>
        </TableLayout>
    </ScrollView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_weight="9"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/chatLine"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="Say:"
            android:imeOptions="actionSend"
            android:singleLine="true" />
    </LinearLayout>

</LinearLayout>


我建议你不要使用桌面布局。只需检查条件,即可在
getViews()方法中更改布局/视图的背景

某些线程可能对您有所帮助:

  • 下面的代码怎么样-

    Main.xml

    <LinearLayout android:id="@+id/list_layout"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:background="@drawable/background"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <ListView android:id="@+id/myList" 
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"/>
    
    </LinearLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/even_container"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    
        <ImageView android:id="@+id/user_img"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_marginTop="80dip"
            android:src="@drawable/sample_image"/>
    
        <ImageView android:id="@+id/even_bubble"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="5dip"
            android:src="@drawable/even"/>
    
        <TextView android:id="@+id/text" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:textColor="#000000" 
            android:textSize="16dip"
            android:layout_marginRight="8dip"
            android:layout_marginLeft="120dip"
            android:layout_marginTop="10dip" />
    
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/even_container"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    
        <ImageView android:id="@+id/user_img"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_marginTop="80dip"
            android:layout_alignParentRight="true"
            android:src="@drawable/sample_image"/>
    
        <ImageView android:id="@+id/odd_bubble"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_margin="5dip"
            android:src="@drawable/odd"/>
    
        <TextView android:id="@+id/text" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:textColor="#ffffff" 
            android:textSize="16dip"
            android:layout_marginRight="120dip"
            android:layout_marginLeft="8dip"
            android:layout_marginTop="10dip" />
    
    </RelativeLayout>
    
    
    
    列表\行\布局\偶数.xml

    <LinearLayout android:id="@+id/list_layout"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:background="@drawable/background"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <ListView android:id="@+id/myList" 
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"/>
    
    </LinearLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/even_container"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    
        <ImageView android:id="@+id/user_img"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_marginTop="80dip"
            android:src="@drawable/sample_image"/>
    
        <ImageView android:id="@+id/even_bubble"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="5dip"
            android:src="@drawable/even"/>
    
        <TextView android:id="@+id/text" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:textColor="#000000" 
            android:textSize="16dip"
            android:layout_marginRight="8dip"
            android:layout_marginLeft="120dip"
            android:layout_marginTop="10dip" />
    
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/even_container"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    
        <ImageView android:id="@+id/user_img"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_marginTop="80dip"
            android:layout_alignParentRight="true"
            android:src="@drawable/sample_image"/>
    
        <ImageView android:id="@+id/odd_bubble"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_margin="5dip"
            android:src="@drawable/odd"/>
    
        <TextView android:id="@+id/text" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:textColor="#ffffff" 
            android:textSize="16dip"
            android:layout_marginRight="120dip"
            android:layout_marginLeft="8dip"
            android:layout_marginTop="10dip" />
    
    </RelativeLayout>
    
    
    
    列表\行\布局\奇数.xml

    <LinearLayout android:id="@+id/list_layout"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:background="@drawable/background"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <ListView android:id="@+id/myList" 
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"/>
    
    </LinearLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/even_container"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    
        <ImageView android:id="@+id/user_img"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_marginTop="80dip"
            android:src="@drawable/sample_image"/>
    
        <ImageView android:id="@+id/even_bubble"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_margin="5dip"
            android:src="@drawable/even"/>
    
        <TextView android:id="@+id/text" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:textColor="#000000" 
            android:textSize="16dip"
            android:layout_marginRight="8dip"
            android:layout_marginLeft="120dip"
            android:layout_marginTop="10dip" />
    
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/even_container"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    
        <ImageView android:id="@+id/user_img"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_marginTop="80dip"
            android:layout_alignParentRight="true"
            android:src="@drawable/sample_image"/>
    
        <ImageView android:id="@+id/odd_bubble"
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_margin="5dip"
            android:src="@drawable/odd"/>
    
        <TextView android:id="@+id/text" 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:textColor="#ffffff" 
            android:textSize="16dip"
            android:layout_marginRight="120dip"
            android:layout_marginLeft="8dip"
            android:layout_marginTop="10dip" />
    
    </RelativeLayout>
    
    
    
    这是我的输出-


    列出项目信息\u left.xml

    <?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:gravity="left"
    android:orientation="vertical"
    android:paddingBottom="5dp"
    android:paddingRight="10dp"
    android:paddingTop="5dp" >
    
    <TextView
        android:id="@+id/lblMsgFrom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:textColor="#777777"
        android:textSize="12dp"
        android:textStyle="italic" />
    
    <RelativeLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    
        <TextView
            android:id="@+id/txtMsg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_msg_from"
            android:paddingBottom="5dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="5dp"
            android:textColor="#ff717171"
            android:textSize="16dp"
    
            android:layout_toRightOf="@+id/textView27"
            android:layout_marginRight="50dp" />
    
        <TextView
            android:id="@+id/textView27"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/triangle_msg_from"
            android:paddingRight="10dp"
            android:textColor="#ffffff"
            android:textSize="16dp"
            android:paddingLeft="10dp"
            android:paddingTop="2dp"
            android:layout_alignParentLeft="true"
            android:layout_marginTop="3dp" />
    
    </RelativeLayout>
    
    </LinearLayout>
    
    像这样在你的活动中使用它

        ListView listMsg; 
        ArrayList<Msg> listMessages;
        MessagesListAdapter adapter;
        listMessages = new ArrayList<Msg>();
    
        listMessages.add(new Msg(cle,email,message,attach....));
        adapter = new MessagesListAdapter(this, listMessages);
        listMsg.setAdapter(adapter);
    
    ListView-listMsg;
    ArrayList列表消息;
    消息适配器;
    listMessages=newarraylist();
    添加(新消息(cle、电子邮件、消息、附加…);
    adapter=newmessagesListAdapter(此为listMessages);
    setAdapter(适配器);
    
    基于此,


    屏幕截图

    我创建了一个用于创建聊天列表的库,这可能会有所帮助


    警告:第一个链接有严重的弹出窗口。小心点。@LonelyCoder我想现在就足够了@Jan1337z你也是。检查修改后的链接。您好,链接已关闭,请重新上传。我发现一个链接,可能会非常有用。看看这个项目的第一个环节是什么broken@ManojFrekzz删除断开的链接!谢谢
        ListView listMsg; 
        ArrayList<Msg> listMessages;
        MessagesListAdapter adapter;
        listMessages = new ArrayList<Msg>();
    
        listMessages.add(new Msg(cle,email,message,attach....));
        adapter = new MessagesListAdapter(this, listMessages);
        listMsg.setAdapter(adapter);