如何在chatapp中将新收到的消息设置为粗体

时间:2019-01-29 11:46:05

标签: java android

我正在尝试使用我遵循的教程来构建一个简单的聊天应用程序。我想实现一些代码,当您查看所有当前的聊天伙伴并且有人向您发送新消息时,该消息样式将变为粗体,直到我阅读为止,然后又恢复为正常。现在,我只知道您可以更改xml文件中的样式。但是这样做会改变所有消息。我只希望收到新的未读邮件。有什么建议吗?

我现在拥有的是:https://imgur.com/a/sUeMTK2

我想要的是:https://imgur.com/a/3YkBDzI

//check for last message
private void lastMessage(final String userid, final TextView last_msg){
    theLastMessage = "default";
    final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Chats");

    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                Chat chat = snapshot.getValue(Chat.class);
               if (firebaseUser != null && chat != null) {
                    if (chat.getReceiver().equals(firebaseUser.getUid()) && chat.getSender().equals(userid) ||
                            chat.getReceiver().equals(userid) && chat.getSender().equals(firebaseUser.getUid())) {
                        theLastMessage = chat.getMessage();
                    }
                }
            }

            switch (theLastMessage){
                case  "default":
                    last_msg.setText("No Message");
                    break;

                default:
                    last_msg.setText(theLastMessage);
                    break;
            }

            theLastMessage = "default";
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

//XML FILE:
<TextView
    android:id="@+id/last_msg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/username"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="5dp"
    android:layout_toRightOf="@id/profile_image"
    android:maxLines="1"
    android:paddingTop="5dp"
    android:textStyle="bold"
    android:textColor="@color/colorPrimaryDark" />

2 个答案:

答案 0 :(得分:0)

您可以使用HTML标记(使用html标记加粗显示)来完成此操作:

String bold= "<b>" + theLastMessage + "</b> ";
 last_message.setText(Html.fromHtml(bold));

答案 1 :(得分:0)

 if (!chat.isIsseen() && firebaseUser.getUid().equals(chat.getReceiver())){

                       last_msg.setTypeface(null, Typeface.BOLD_ITALIC );

                    }else {

                        last_msg.setTypeface(null,Typeface.ITALIC);

                    }

在这之后加上这个

theLastMessage = chat.getMessage();