From 177fd885bac54522475fadb95c0396453b77d37c Mon Sep 17 00:00:00 2001 From: Rushikesh Jogdand Date: Sun, 19 Nov 2017 11:49:28 +0530 Subject: [PATCH] Issue #173 : Max width of messageTv is now set in `onCreateViewHolder` (#176) --- .../macbitsgoa/ard/adapters/ChatMsgAdapter.java | 10 ++++++++++ .../ard/viewholders/ChatMsgViewHolder.java | 15 +++------------ .../main/res/layout/vh_activity_chat_chatmsg.xml | 3 ++- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/macbitsgoa/ard/adapters/ChatMsgAdapter.java b/app/src/main/java/com/macbitsgoa/ard/adapters/ChatMsgAdapter.java index 622f3c4..8a1ebdc 100644 --- a/app/src/main/java/com/macbitsgoa/ard/adapters/ChatMsgAdapter.java +++ b/app/src/main/java/com/macbitsgoa/ard/adapters/ChatMsgAdapter.java @@ -7,6 +7,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; +import android.widget.TextView; import com.macbitsgoa.ard.R; import com.macbitsgoa.ard.models.MessageItem; @@ -14,6 +15,9 @@ import io.realm.RealmResults; +import static com.macbitsgoa.ard.utils.AHC.getScreenWidth; +import static com.macbitsgoa.ard.viewholders.ChatMsgViewHolder.MAX_WIDTH_FRACTION; + public class ChatMsgAdapter extends RecyclerView.Adapter { public static final int RECEIVER = 0; @@ -29,6 +33,7 @@ public ChatMsgAdapter(final RealmResults messageItems) { public ChatMsgViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) { final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); final View view = inflater.inflate(R.layout.vh_activity_chat_chatmsg, parent, false); + final LinearLayout root = view.findViewById(R.id.ll_chatmsg_root); final LinearLayout msgBox = view.findViewById(R.id.ll_chatmsg_msg_box); if (viewType == RECEIVER) { @@ -38,6 +43,11 @@ public ChatMsgViewHolder onCreateViewHolder(final ViewGroup parent, final int vi root.setGravity(Gravity.START); msgBox.setBackground(ContextCompat.getDrawable(parent.getContext(), R.drawable.bg_chat_sen)); } + + final TextView messageTv = view.findViewById(R.id.textView_viewHolder_chatmsg_msg); + final int msgMaxWidth = ((int) (getScreenWidth() * MAX_WIDTH_FRACTION)); + messageTv.setMaxWidth(msgMaxWidth); + return new ChatMsgViewHolder(view); } diff --git a/app/src/main/java/com/macbitsgoa/ard/viewholders/ChatMsgViewHolder.java b/app/src/main/java/com/macbitsgoa/ard/viewholders/ChatMsgViewHolder.java index b9c18bb..e1a90e2 100644 --- a/app/src/main/java/com/macbitsgoa/ard/viewholders/ChatMsgViewHolder.java +++ b/app/src/main/java/com/macbitsgoa/ard/viewholders/ChatMsgViewHolder.java @@ -14,14 +14,12 @@ import com.macbitsgoa.ard.types.MessageStatusType; import com.macbitsgoa.ard.utils.AHC; -import static com.macbitsgoa.ard.utils.AHC.getScreenWidth; - public class ChatMsgViewHolder extends RecyclerView.ViewHolder { /** - * Maximum width fraction of {@link #message} + {@link #time} + {@link #status} of screen size. + * Maximum width fraction of {@link #message} of screen size. */ - private static final float MAX_WIDTH_FRACTION = 0.8f; + public static final float MAX_WIDTH_FRACTION = 0.6f; private TextView time; @@ -44,13 +42,6 @@ public void populate(@NonNull final MessageItem messageItem) { time.setText(AHC.getSimpleDayAndTime(messageItem.getMessageTime())); message.setText(messageItem.getMessageData()); - // https://stackoverflow.com/a/24035591 - message.getViewTreeObserver().addOnGlobalLayoutListener(() -> { - final int msgMaxWidth = ((int) (getScreenWidth() * MAX_WIDTH_FRACTION)) - time.getWidth() - status.getWidth(); - if (message.getWidth() > msgMaxWidth) { - message.setWidth(msgMaxWidth); - } - }); if (getItemViewType() == ChatMsgAdapter.RECEIVER) { final Context context = status.getContext(); switch (messageItem.getMessageStatus()) { @@ -75,7 +66,7 @@ public void populate(@NonNull final MessageItem messageItem) { status.setColorFilter(Color.GRAY); break; } - } else { + } else if (getItemViewType() == ChatMsgAdapter.SENDER) { status.setVisibility(View.GONE); } } diff --git a/app/src/main/res/layout/vh_activity_chat_chatmsg.xml b/app/src/main/res/layout/vh_activity_chat_chatmsg.xml index 1a7414c..0f6b123 100644 --- a/app/src/main/res/layout/vh_activity_chat_chatmsg.xml +++ b/app/src/main/res/layout/vh_activity_chat_chatmsg.xml @@ -24,11 +24,12 @@ android:autoLink="all" android:linksClickable="true" android:padding="8dp" + android:textColor="@color/black" android:textColorLink="@color/blue_500" android:textIsSelectable="true" android:textSize="16sp" tools:ignore="NestedWeights" - tools:text="CHATMSG" /> + tools:text="Chat MSG" />