我正在尝试使用我遵循的教程来构建一个简单的聊天应用程序。我想实现一些代码,当您查看所有当前的聊天伙伴并且有人向您发送新消息时,该消息样式将变为粗体,直到我阅读为止,然后又恢复为正常。现在,我只知道您可以更改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" />
答案 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();