From 633a854562cc6b72743e121e7400186e92ba50d9 Mon Sep 17 00:00:00 2001 From: Michael Obi Date: Thu, 29 Jun 2017 22:39:43 +0100 Subject: [PATCH 1/5] Make Input EditText box hint modifiable --- app/src/main/res/layout/activity_main.xml | 31 ++++++++++--------- app/src/main/res/values/strings.xml | 1 + .../co/intentservice/chatui/ChatView.java | 24 ++++++++------ library/src/main/res/values/attrs.xml | 1 + 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4b48393..8049330 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,22 +1,23 @@ + style="@style/Widget.AppCompat.ButtonBar" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center_horizontal" + android:orientation="vertical" + tools:context="co.intentservice.chatui.sample.MainActivity"> + android:id="@+id/chat_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + chatview:backgroundColor="@color/off_white" + chatview:bubbleElevation="elevated" + chatview:bubbleBackgroundRcv="@color/blue" + chatview:bubbleBackgroundSend="@color/white" + chatview:inputHint="@string/start_typing"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2cea42f..6781f72 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,6 @@ Android ChatView Sample + Start typing diff --git a/library/src/main/java/co/intentservice/chatui/ChatView.java b/library/src/main/java/co/intentservice/chatui/ChatView.java index da63530..8013876 100644 --- a/library/src/main/java/co/intentservice/chatui/ChatView.java +++ b/library/src/main/java/co/intentservice/chatui/ChatView.java @@ -11,7 +11,6 @@ import android.text.TextUtils; import android.text.TextWatcher; import android.util.AttributeSet; -import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -44,7 +43,7 @@ public class ChatView extends RelativeLayout { private FloatingActionsMenu actionsMenu; private boolean previousFocusState = false, useEditorAction, isTyping; - + private TypingListener typingListener; private Runnable typingTimerRunnable = new Runnable() { @Override public void run() { @@ -54,10 +53,10 @@ public void run() { } } }; - private TypingListener typingListener; private OnSentMessageListener onSentMessageListener; private ChatViewListAdapter chatViewListAdapter; + private String inputHint; private int inputFrameBackgroundColor, backgroundColor; private int inputTextSize, inputTextColor, inputHintColor; private int sendButtonBackgroundTint, sendButtonIconTint; @@ -69,9 +68,7 @@ public void run() { private TypedArray attributes, textAppearanceAttributes; private Context context; - - - ChatView(Context context) { + ChatView(Context context) { this(context, null); } @@ -84,7 +81,6 @@ public ChatView(Context context, AttributeSet attrs, int defStyleAttr) { init(context, attrs, defStyleAttr); } - private void init(Context context, AttributeSet attrs, int defStyleAttr) { LayoutInflater.from(getContext()).inflate(R.layout.chat_view, this, true); this.context = context; @@ -120,7 +116,6 @@ private void setListAdapter() { chatListView.setAdapter(chatViewListAdapter); } - private void setViewAttributes() { setChatViewBackground(); setInputFrameAttributes(); @@ -134,7 +129,6 @@ private void getChatViewBackgroundColor() { } private void getAttributesForBubbles() { - float dip4 = context.getResources().getDisplayMetrics().density * 4.0f; int elevation = attributes.getInt(R.styleable.ChatView_bubbleElevation, ELEVATED); bubbleElevation = elevation == ELEVATED ? dip4 : 0; @@ -168,12 +162,16 @@ private void getAttributesForInputText() { overrideTextStylesIfSetIndividually(); } + private void setTextAppearanceAttributes() { final int textAppearanceId = attributes.getResourceId(R.styleable.ChatView_inputTextAppearance, 0); textAppearanceAttributes = getContext().obtainStyledAttributes(textAppearanceId, R.styleable.ChatViewInputTextAppearance); } private void setInputTextAttributes() { + if (inputHint != null) { + inputEditText.setHint(inputHint); + } inputEditText.setTextColor(inputTextColor); inputEditText.setHintTextColor(inputHintColor); inputEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, inputTextSize); @@ -213,6 +211,7 @@ private void setInputTextDefaults() { inputTextSize = context.getResources().getDimensionPixelSize(R.dimen.default_input_text_size); inputTextColor = ContextCompat.getColor(context, R.color.black); inputHintColor = ContextCompat.getColor(context, R.color.main_color_gray); + setInputHint(); } private void setInputTextSize() { @@ -227,6 +226,12 @@ private void setInputTextColor() { } } + public void setInputHint() { + if (attributes.hasValue(R.styleable.ChatView_inputHint)) { + inputHint = attributes.getString(R.styleable.ChatView_inputHint); + } + } + private void setInputHintColor() { if (textAppearanceAttributes.hasValue(R.styleable.ChatView_inputHintColor)) { inputHintColor = attributes.getColor(R.styleable.ChatView_inputHintColor, inputHintColor); @@ -369,6 +374,7 @@ public EditText getInputEditText() { return inputEditText; } + public FloatingActionsMenu getActionsMenu() { return actionsMenu; } diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index 892dd8b..44c3bfb 100755 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -8,6 +8,7 @@ + From f4da4f619f85d127be656e52b71e86be6707c196 Mon Sep 17 00:00:00 2001 From: Michael Obi Date: Thu, 29 Jun 2017 22:42:54 +0100 Subject: [PATCH 2/5] Add inputHint to customization section of ReadMe.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fa98c42..130c98d 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,9 @@ chatview:inputUseEditorAction="" // true or false chatview:inputTextAppearance="" chatview:inputTextSize="" chatview:inputTextColor="" +chatview:inputHint="" chatview:inputHintColor="" -chatview:sendBtnIcon="" +chatview:sendBtnIcon="" chatview:sendBtnIconTint="" chatview:sendBtnBackgroundTint="" From 99b7917d7a3c05f3c167e5b315a61da3e58b1eec Mon Sep 17 00:00:00 2001 From: Michael Obi Date: Thu, 28 Jun 2018 21:42:17 +0100 Subject: [PATCH 3/5] Use local library project in sample app module --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index f841707..2914bdd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,5 +24,5 @@ dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' - compile 'co.intentservice.android-chat-ui:chat-ui:0.1.1' + compile project(':chat-ui') } From 7b3581fdd6ff09652ed3656ce2ba01fa2c963240 Mon Sep 17 00:00:00 2001 From: Michael Obi Date: Thu, 28 Jun 2018 21:43:00 +0100 Subject: [PATCH 4/5] Add message with Sender Name to sample app --- .../main/java/co/intentservice/chatui/sample/MainActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/co/intentservice/chatui/sample/MainActivity.java b/app/src/main/java/co/intentservice/chatui/sample/MainActivity.java index c5eee25..15bacea 100644 --- a/app/src/main/java/co/intentservice/chatui/sample/MainActivity.java +++ b/app/src/main/java/co/intentservice/chatui/sample/MainActivity.java @@ -15,6 +15,8 @@ protected void onCreate(Bundle savedInstanceState) { ChatView chatView = (ChatView) findViewById(R.id.chat_view); chatView.addMessage(new ChatMessage("Message received", System.currentTimeMillis(), ChatMessage.Type.RECEIVED)); + chatView.addMessage(new ChatMessage("A message with a sender name", + System.currentTimeMillis(), ChatMessage.Type.RECEIVED, "Ryan Java")); chatView.setOnSentMessageListener(new ChatView.OnSentMessageListener() { @Override public boolean sendMessage(ChatMessage chatMessage) { From f1e7e0efd7f79f203fbc20384cd96f6f518d79d7 Mon Sep 17 00:00:00 2001 From: Michael Obi Date: Fri, 29 Jun 2018 08:54:56 +0100 Subject: [PATCH 5/5] Fix scroll overflow issue --- chat-ui/src/main/res/layout/chat_view.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chat-ui/src/main/res/layout/chat_view.xml b/chat-ui/src/main/res/layout/chat_view.xml index 8449ccd..d8255e2 100644 --- a/chat-ui/src/main/res/layout/chat_view.xml +++ b/chat-ui/src/main/res/layout/chat_view.xml @@ -10,9 +10,10 @@ android:id="@+id/chat_list" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_above="@+id/input_frame" android:clipToPadding="false" android:divider="@android:color/transparent" - android:paddingBottom="96dp" + android:paddingBottom="32dp" android:paddingTop="8dp" android:stackFromBottom="true" android:transcriptMode="alwaysScroll" />