Android Java 设置右对齐的recyclerview项目

0 人关注

我正在开发一个安卓的聊天应用程序,并且 我希望与您聊天的用户的信息能向右对齐,而他们的信息能向左对齐。 .这是让你区分信息属于谁的条件。 我只能把它写在bindview支架上。

if(model.getUidSender().equals(fAuth.getCurrentUser().getUid()))

但我如何将该项目向右或向左对齐?

我有还有思考了一下充气的两个不同布局但我应该在CreateViewHolder中进行操作,在其中我不会有model.getUidSender的值。我怎样才能解决这个问题呢?

This is my complete code:

@Override
    protected void onStart() {
        super.onStart();
        CollectionReference collectRefMessage = FirebaseFirestore.getInstance().collection("roomChat")
                .document("rooms")
                .collection(chatId).document("message")
                .collection("messages");
        FirestoreRecyclerOptions<getMessage> options
                = new FirestoreRecyclerOptions.Builder<getMessage>()
                .setQuery(collectRefMessage.limit(1000).orderBy("date", Query.Direction.ASCENDING), getMessage.class)
                .build();
        FirestoreRecyclerAdapter<getMessage, getASetMsg> firestoreRecyclerAdapter = new FirestoreRecyclerAdapter<getMessage, getASetMsg>(options) {
            @Override
            protected void onBindViewHolder(@NonNull @NotNull getASetMsg holder, int position, @NonNull @NotNull getMessage model) {
                holder.txtMsgText.setText(model.getText());
                holder.dateATime.setText(model.getDate());
              //  uidCh = model.getUidSender();
                //if(model.getUidSender().equals(fAuth.getCurrentUser().getUid()))
            @NonNull
            @NotNull
            @Override
            public getASetMsg onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_chat,parent,false);
                getASetMsg viewHolder = new getASetMsg(view);
                return viewHolder;
        rView.setAdapter(firestoreRecyclerAdapter);
        firestoreRecyclerAdapter.startListening();
 public static class getASetMsg extends RecyclerView.ViewHolder {
        TextView txtMsgText, dateATime;
        public getASetMsg(@NonNull View itemView) {
            super(itemView);
            txtMsgText = itemView.findViewById(R.id.txtMsgText);
            dateATime = itemView.findViewById(R.id.dateATime);
    
java
android
android-recyclerview
Conta
Conta
发布于 2021-07-31
1 个回答
Conta
Conta
发布于 2021-07-31
已采纳
0 人赞同

我设法这样解决了这个问题。

 if(model.getUidSender().equals(fAuth.getCurrentUser().getUid())) {
                    final FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) holder.messageCard.getLayoutParams();
                    params.gravity = GravityCompat.END; // or GravityCompat.END
                    holder.messageCard.setLayoutParams(params);

所以,这就是聊天卡的布局。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_alignParentEnd="true"
    app:cardBackgroundColor="@color/textC"
    android:layout_marginTop="10dp"
    <com.google.android.material.card.MaterialCardView
        android:id="@+id/messageCard"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardBackgroundColor="@color/textC"
        app:cardCornerRadius="20dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <TextView
        android:id="@+id/txtMsgText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hi, this is a message"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:textColor="#FFFFFF"
        android:layout_marginTop="25dp"
        android:layout_marginBottom="20dp"
        android:textSize="22dp"/>
    <TextView
        android:id="@+id/dateATime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="30dp"
        android:text="32/07/2021 00:00"
        android:layout_marginTop="5dp"
        android:textColor="@color/white"
        android:layout_marginLeft="30dp"
    </RelativeLayout>