android设置微信聊天布局

本文详细阐述了消息展示中的适配器布局设计,包括消息的接收方与发送方展示逻辑,以及对应的XML布局文件与Java代码实现。重点讨论了如何根据不同消息类型调整布局显示,以实现消息的高效呈现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

adapter的布局:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff"

     >

<!--对方发送地信息-->

 <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="10dp"
        android:paddingTop="5dp"
        android:id="@+id/messagegly"
        android:visibility="gone"  <!--在这里我设置了布局隐藏,等在代码里设置布局显示-->
        >
          <ImageView
              android:layout_gravity="right"
                android:id="@+id/imgPicgl"
              
                   android:layout_width="32dip"
                android:layout_height="48dip"
             
             />       
        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
           
            >
           <FrameLayout 
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:background="@drawable/chatfrom_bg_normal"
               
               >
                 <TextView
                     android:paddingLeft="45dp"
                     android:paddingRight="25dp"
                  android:paddingBottom="30dp"
                 android:paddingTop="8dp"
                     android:layout_gravity="center_vertical"
                android:id="@+id/gl"
                 style="@style/ChattingUIText"
               />
           </FrameLayout>


            <TextView
                android:id="@+id/glDate"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
            
                android:textColor="#ffffff" />
        </LinearLayout>
       

     </LinearLayout>

<!--自己发送的信息布局-->

      <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="5dp"
        android:id="@+id/messagept"
        android:visibility="gone"  <!--设置隐藏-->
        >
              
        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
           android:id="@+id/content"
           android:layout_toLeftOf="@+id/imgPicyh"
            >
           <RelativeLayout 
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:background="@drawable/chatto_bg_normal"
               
               >
                 <TextView
                     android:paddingLeft="25dp"
                     android:paddingRight="45dp"
                     android:layout_gravity="center_vertical"
                        android:id="@+id/yh"
               style="@style/ChattingUIText"
                 android:paddingBottom="30dp"
                 android:paddingTop="8dp"
                />
           </RelativeLayout>


            <TextView
                android:id="@+id/yhDate"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
            
                android:textColor="#ffffff" />
        </LinearLayout>
          <ImageView
             android:layout_alignParentRight="true"
                android:id="@+id/imgPicyh"
                
                   android:layout_width="32dip"
                android:layout_height="48dip"
            
             />
     </RelativeLayout>

</FrameLayout>


java 代码:

listview里加载的adapter:


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ItemHolder itemHolder;
MymessageModel model = list.get(position);

根据type区分对方和自己地消息
if (convertView != null && (itemHolder=(ItemHolder)convertView.getTag()).flag==(Integer.parseInt(model.getType()))) {
itemHolder = (ItemHolder) convertView.getTag();
} else {
itemHolder = new ItemHolder();
convertView = inflater.inflate(R.layout.glmessage, parent, false);
if(model.getType().equals("1")){
LinearLayout layouts=(LinearLayout)convertView.findViewById(R.id.messagegly);
layouts.setVisibility(layouts.VISIBLE);
RelativeLayout relative=(RelativeLayout)convertView.findViewById(R.id.messagept);
relative.setVisibility(relative.GONE);
itemHolder.imgPic = (ImageView) convertView
.findViewById(R.id.imgPicgl);

itemHolder.jl = (TextView) convertView
.findViewById(R.id.gl);

itemHolder.dates = (TextView) convertView
.findViewById(R.id.glDate);
itemHolder.flag=1;
}else if(model.getType().equals("2")){
LinearLayout layouts=(LinearLayout)convertView.findViewById(R.id.messagegly);
layouts.setVisibility(layouts.GONE);
RelativeLayout relative=(RelativeLayout)convertView.findViewById(R.id.messagept);
relative.setVisibility(relative.VISIBLE);
itemHolder.imgPic = (ImageView) convertView
.findViewById(R.id.imgPicyh);

itemHolder.jl = (TextView) convertView
.findViewById(R.id.yh);

itemHolder.dates = (TextView) convertView
.findViewById(R.id.yhDate);
itemHolder.flag=2;
}
convertView.setTag(itemHolder);
}
String picUrl = model.getHeadpic();
itemHolder.imgPic.setTag(picUrl);
imageLoader.addTask(picUrl, itemHolder.imgPic);


imageLoader.doTask();
itemHolder.jl.setText(model.getContent());
itemHolder.dates.setText(model.getOptiondate());

//itemHolder.tvTop.setTag(model);
return convertView;
}
class ItemHolder {
//public TextView tvTop;
public ImageView imgPic;
public TextView jl,dates;
int flag;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值