diff --git a/app/build.gradle b/app/build.gradle
index 5040402..c416ed1 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -65,7 +65,7 @@ dependencies {
implementation 'android.arch.lifecycle:extensions:1.1.1'
kapt "android.arch.lifecycle:compiler:1.1.1"
//cometchat sdk
- implementation 'com.cometchat:pro-android-chat-sdk:2.0.0-beta2'
+ implementation 'com.cometchat:pro-android-chat-sdk:2.0.0-beta4'
implementation 'com.facebook.shimmer:shimmer:0.4.0'
api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a38933d..64fbd68 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -65,7 +65,7 @@
+ android:windowSoftInputMode="stateAlwaysHidden" />
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt b/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt
index 2cbd6b7..924f0b9 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt
+++ b/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt
@@ -37,7 +37,7 @@ class GroupDetailActivity : AppCompatActivity() {
private lateinit var groupOptionAdapter: GroupOptionAdapter
- private var groupOptionList: MutableList = mutableListOf()
+ private var groupOptionList: MutableMap = mutableMapOf()
private lateinit var groupViewModel: GroupViewModel
@@ -150,16 +150,16 @@ class GroupDetailActivity : AppCompatActivity() {
}
- private fun GroupOptionItemList(): MutableList {
+ private fun GroupOptionItemList(): MutableMap {
- groupOptionList.add(GroupOption(getString(R.string.view_members), ContextCompat.getDrawable(this, R.drawable.ic_person_black_24dp)))
+ groupOptionList.put(0,GroupOption(getString(R.string.view_members), ContextCompat.getDrawable(this, R.drawable.ic_person_black_24dp)))
if(userScope==CometChatConstants.SCOPE_ADMIN||userScope==CometChatConstants.SCOPE_MODERATOR) {
- groupOptionList.add(GroupOption(getString(R.string.add_members), ContextCompat.getDrawable(this, R.drawable.ic_person_add_black_24dp)))
+ groupOptionList.put(1,GroupOption(getString(R.string.add_members), ContextCompat.getDrawable(this, R.drawable.ic_person_add_black_24dp)))
}
- groupOptionList.add(GroupOption(getString(R.string.unban_members), ContextCompat.getDrawable(this, R.drawable.ic_supervisor_account_black_24dp)))
- groupOptionList.add(GroupOption(getString(R.string.leave_group), ContextCompat.getDrawable(this, R.drawable.ic_exit_to_app_black_24dp)))
+ groupOptionList.put(2,GroupOption(getString(R.string.unban_members), ContextCompat.getDrawable(this, R.drawable.ic_supervisor_account_black_24dp)))
+ groupOptionList.put(3,GroupOption(getString(R.string.leave_group), ContextCompat.getDrawable(this, R.drawable.ic_exit_to_app_black_24dp)))
if (userScope==CometChatConstants.SCOPE_ADMIN) {
- groupOptionList.add(GroupOption(getString(R.string.delete_group), ContextCompat.getDrawable(this, R.drawable.ic_delete_black_24dp)))
+ groupOptionList.put(4,GroupOption(getString(R.string.delete_group), ContextCompat.getDrawable(this, R.drawable.ic_delete_black_24dp)))
}
return groupOptionList
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt
index fd54c79..a956911 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt
+++ b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt
@@ -27,7 +27,6 @@ import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.cometchat.pro.constants.CometChatConstants
import com.cometchat.pro.core.Call
-import com.cometchat.pro.core.CometChat
import com.cometchat.pro.models.*
import com.inscripts.cometchatpulse.Activities.ImageViewActivity
import com.inscripts.cometchatpulse.AsyncTask.DownloadFile
@@ -279,8 +278,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
rightTextMessageHolder.binding.tvMessage.typeface = StringContract.Font.message
}
- setDeliveryIcon(rightTextMessageHolder.binding.imgMessageStatus,baseMessage)
- setReadIcon(rightTextMessageHolder.binding.imgMessageStatus,baseMessage)
+ setStatusIcon(rightTextMessageHolder.binding.imgMessageStatus,baseMessage)
}
@@ -335,8 +333,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
}
})
- setDeliveryIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage)
- setReadIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage)
+ setStatusIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage)
setLongClick(rightImageVideoMessageHolder.binding.imageMessage,baseMessage)
}
@@ -353,8 +350,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
rightFileViewHolder.binding.timeStamp.typeface = StringContract.Font.status
val finalMediaFile = mediaFile
setLongClick(rightFileViewHolder.binding.root,baseMessage)
- setDeliveryIcon(rightFileViewHolder.binding.messageStatus,baseMessage)
- setReadIcon(rightFileViewHolder.binding.messageStatus,baseMessage)
+ setStatusIcon(rightFileViewHolder.binding.messageStatus,baseMessage)
rightFileViewHolder.binding.fileName.setOnClickListener(View.OnClickListener { context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(finalMediaFile))) })
} catch (e: Exception) {
@@ -369,10 +365,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
rightLocationViewHolder.binding.message = baseMessage as TextMessage
rightLocationViewHolder.binding.timestamp.typeface = StringContract.Font.status
rightLocationViewHolder.bindView(p1, messagesList)
- setDeliveryIcon(rightLocationViewHolder.binding.imgMessageStatus,baseMessage)
- setReadIcon(rightLocationViewHolder.binding.imgMessageStatus,baseMessage)
-
-
+ setStatusIcon(rightLocationViewHolder.binding.imgMessageStatus,baseMessage)
}
StringContract.ViewType.LEFT_LOCATION_MESSAGE -> {
@@ -390,8 +383,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
rightReplyMessageHolder.binding.message = baseMessage
rightReplyMessageHolder.binding.rlMain.background.setColorFilter(StringContract.Color.rightMessageColor,
PorterDuff.Mode.SRC_ATOP)
- baseMessage?.let { setDeliveryIcon(rightReplyMessageHolder.binding.messageStatus, it) }
- baseMessage?.let { setReadIcon(rightReplyMessageHolder.binding.messageStatus, it) }
+ baseMessage?.let { setStatusIcon(rightReplyMessageHolder.binding.messageStatus, it) }
if (baseMessage is TextMessage) {
rightReplyMessageHolder.binding.txtNewmsg.visibility = View.VISIBLE
@@ -460,8 +452,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
rightReplyMessageHolder.binding.message = baseMessage
rightReplyMessageHolder.binding.rlMain.background.setColorFilter(StringContract.Color.rightMessageColor,
PorterDuff.Mode.SRC_ATOP)
- baseMessage?.let { setDeliveryIcon(rightReplyMessageHolder.binding.messageStatus, it) }
- baseMessage?.let { setReadIcon(rightReplyMessageHolder.binding.messageStatus, it) }
+ baseMessage?.let { setStatusIcon(rightReplyMessageHolder.binding.messageStatus, it) }
if (baseMessage is MediaMessage) {
@@ -941,8 +932,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
}
})
- setDeliveryIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage)
- setReadIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage)
+ setStatusIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage)
setLongClick(rightImageVideoMessageHolder.binding.root,baseMessage)
}
@@ -955,8 +945,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
rightAudioMessageHolder.binding.timeStamp.typeface = StringContract.Font.status
rightAudioMessageHolder.binding.audioLength.typeface = StringContract.Font.status
setLongClick(rightAudioMessageHolder.binding.root, baseMessage)
- setDeliveryIcon(rightAudioMessageHolder.binding.messageStatus,baseMessage)
- setReadIcon(rightAudioMessageHolder.binding.messageStatus,baseMessage)
+ setStatusIcon(rightAudioMessageHolder.binding.messageStatus,baseMessage)
try {
if (timeStampLong?.let { GroupChatAdapter.audioDurations.get(it) } == null) {
@@ -1446,21 +1435,25 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri
notifyDataSetChanged()
}
- private fun setDeliveryIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) {
- if (baseMessage.deliveredAt != 0L) {
- circleImageView.setImageResource(R.drawable.ic_double_tick)
- }
- }
+ private fun setStatusIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) {
- private fun setReadIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) {
if (baseMessage.readAt != 0L) {
- val drawable= ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue);
+ val drawable=ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue);
drawable?.setColorFilter(StringContract.Color.primaryColor,PorterDuff.Mode.SRC_ATOP)
circleImageView.setImageDrawable(drawable)
- circleImageView.setCircleBackgroundColor(context.resources.getColor(android.R.color.transparent))
+ circleImageView.circleBackgroundColor = context.resources.getColor(android.R.color.transparent)
+ }
+ else if (baseMessage.deliveredAt != 0L) {
+ circleImageView.setImageResource(R.drawable.ic_double_tick)
+ circleImageView.circleBackgroundColor = StringContract.Color.primaryColor
+ }
+ else{
+ circleImageView.setImageResource(R.drawable.ic_check_24dp)
+ circleImageView.circleBackgroundColor = StringContract.Color.primaryColor
}
}
+
fun setDeletedMessage(deletedMessage: BaseMessage) {
messagesList.put(deletedMessage.id.toLong(),deletedMessage)
notifyDataSetChanged()
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt
index 5389c35..ef832e6 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt
+++ b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt
@@ -16,7 +16,7 @@ import com.inscripts.cometchatpulse.ViewHolder.GroupOptionViewHolder
import com.inscripts.cometchatpulse.databinding.GroupOptionItemBinding
-class GroupOptionAdapter(val context:Context,val groupOptionList: MutableList,
+class GroupOptionAdapter(val context:Context,val groupOptionList: MutableMap,
val ownerId:String,val guid:String, onOptionClickListener: OnOptionClickListener): RecyclerView.Adapter() {
private var onOptionClickListener:OnOptionClickListener
@@ -38,7 +38,7 @@ class GroupOptionAdapter(val context:Context,val groupOptionList: MutableList {
@@ -1018,8 +1009,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String,
rightFileViewHolder.binding.fileName.setOnClickListener(View.OnClickListener {
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(finalMediaFile)))
})
- setDeliveryIcon(rightFileViewHolder.binding.messageStatus, baseMessage)
- setReadIcon(rightFileViewHolder.binding.messageStatus, baseMessage)
+ setStatusIcon(rightFileViewHolder.binding.messageStatus, baseMessage)
setLongClick(rightFileViewHolder.binding.root, baseMessage)
} catch (e: Exception) {
e.printStackTrace()
@@ -1104,9 +1094,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String,
})
- setDeliveryIcon(rightImageVideoMessageHolder.binding.messageStatus, baseMessage)
- setReadIcon(rightImageVideoMessageHolder.binding.messageStatus, baseMessage)
-
+ setStatusIcon(rightImageVideoMessageHolder.binding.messageStatus, baseMessage)
setLongClick(rightImageVideoMessageHolder.binding.root, baseMessage)
}
@@ -1120,8 +1108,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String,
rightAudioMessageHolder.binding.audioLength.typeface = StringContract.Font.status
setLongClick(rightAudioMessageHolder.binding.root, baseMessage)
- setDeliveryIcon(rightAudioMessageHolder.binding.messageStatus, baseMessage)
- setReadIcon(rightAudioMessageHolder.binding.messageStatus, baseMessage)
+ setStatusIcon(rightAudioMessageHolder.binding.messageStatus, baseMessage)
try {
@@ -1374,7 +1361,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String,
}
}
- private fun setDeliveryIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) {
+ private fun setStatusIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) {
if (baseMessage.readAt != 0L) {
val drawable=ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue);
@@ -1392,14 +1379,6 @@ class OneToOneAdapter(val context: Context, val ownerId: String,
}
}
- private fun setReadIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) {
-// if (baseMessage.readAt != 0L) {
-// val drawable=ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue);
-// drawable?.setColorFilter(StringContract.Color.primaryColor,PorterDuff.Mode.SRC_ATOP)
-// circleImageView.setImageDrawable(drawable)
-// circleImageView.circleBackgroundColor = context.resources.getColor(android.R.color.transparent)
-// }
- }
private fun startIntent(baseMessage: MediaMessage) {
val imageIntent = Intent(context, ImageViewActivity::class.java)
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt b/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt
index 2325c79..1562c90 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt
+++ b/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt
@@ -121,8 +121,6 @@ class RecordMicButton : android.support.v7.widget.AppCompatImageView, View.OnTou
MotionEvent.ACTION_DOWN ->{ recordAudio!!.onActionDown(view as RecordMicButton, context)}
- MotionEvent.ACTION_MOVE -> {recordAudio!!.onActionMove(view as RecordMicButton, motionEvent)}
-
MotionEvent.ACTION_UP -> {recordAudio!!.onActionUp(view as RecordMicButton)}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt b/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt
index cca0953..6825272 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt
+++ b/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt
@@ -22,7 +22,6 @@ import com.cometchat.pro.models.MessageReceipt
import com.cometchat.pro.models.MediaMessage
import com.cometchat.pro.models.TextMessage
import com.cometchat.pro.models.BaseMessage
-import com.google.android.gms.location.places.ui.PlaceAutocomplete.getStatus
import com.inscripts.cometchatpulse.Fragment.GroupFragment
class MessageRepository {
@@ -72,8 +71,6 @@ class MessageRepository {
@WorkerThread
fun fetchMessage(LIMIT: Int, userId: String,isRefresh:Boolean) {
-
-
try {
if (isRefresh){
messageRequest= null
@@ -82,64 +79,72 @@ class MessageRepository {
if (messageRequest == null) {
messageRequest = MessagesRequest.MessagesRequestBuilder().setUID(userId).setLimit(LIMIT).build()
- messageRequest?.fetchPrevious(object : CometChat.CallbackListener>() {
- override fun onSuccess(p0: List?) {
+ fetchMessageRequest(messageRequest)
+ } else {
+ fetchMessageRequest(messageRequest)
+ }
+ } catch (e: NullPointerException) {
+ e.printStackTrace()
+ }
- if (p0 != null) {
- for (baseMessage: BaseMessage in p0) {
- Log.d(TAG, "baseMessage onSuccess: " + baseMessage.id)
- if (baseMessage.category != CometChatConstants.CATEGORY_ACTION && baseMessage.deletedAt == 0L) {
- mutableOneToOneMessageList.add(baseMessage)
- }
- }
- if(p0.isNotEmpty()){
- val message=p0.get(p0.size-1)
- CometChat.markAsRead(message.id,message.sender.uid,message.receiverType);
- }
- onetoOneMessageList.value = mutableOneToOneMessageList
- }
+ }
- Log.d(TAG, "messageRequest onSuccess: ${p0?.size}")
+ fun fetchMessageRequest(messagesRequest: MessagesRequest?){
- }
+ messagesRequest?.fetchPrevious(object : CometChat.CallbackListener>() {
+ override fun onSuccess(p0: List?) {
- override fun onError(p0: CometChatException?) {
- Log.d(TAG, "messageRequest onError: ${p0?.message}")
+ if (p0 != null) {
+ for (baseMessage: BaseMessage in p0) {
+ Log.d(TAG, "baseMessage onSuccess: " + baseMessage.id)
+ if (baseMessage.category != CometChatConstants.CATEGORY_ACTION && baseMessage.deletedAt == 0L) {
+ mutableOneToOneMessageList.add(baseMessage)
+ }
+ }
+ if(p0.isNotEmpty()){
+ val message=p0.get(p0.size-1)
+ CometChat.markAsRead(message.id,message.sender.uid,message.receiverType);
}
+ onetoOneMessageList.value = mutableOneToOneMessageList
+ }
- })
+ Log.d(TAG, "messageRequest onSuccess: ${p0?.size}")
- } else {
- messageRequest?.fetchPrevious(object : CometChat.CallbackListener>() {
- override fun onError(p0: CometChatException?) {
+ }
- }
+ override fun onError(p0: CometChatException?) {
+ Log.d(TAG, "messageRequest onError: ${p0?.message}")
+ }
- override fun onSuccess(p0: List?) {
+ })
+ }
- if (p0 != null) {
- for (baseMessage: BaseMessage in p0) {
- Log.d(TAG, "baseMessage onSuccess: " + baseMessage.id)
- if (baseMessage.category != CometChatConstants.CATEGORY_ACTION && baseMessage.deletedAt == 0L) {
- mutableOneToOneMessageList.add(baseMessage)
- }
- }
- onetoOneMessageList.value = mutableOneToOneMessageList
- if(p0.isNotEmpty()){
- val message=p0.get(p0.size-1);
- CometChat.markAsRead(message.id,message.sender.uid,message.receiverType);
- }
- }
+ fun fetchGroupMessageRequest(messagesRequest: MessagesRequest?){
+ groupMessageRequest!!.fetchPrevious(object : CometChat.CallbackListener>() {
+ override fun onSuccess(p0: List?) {
+ Log.e("groupMessageRequest","${p0?.size}")
+ if (p0!=null) {
+ for (message in p0) {
+ if (message.category != CometChatConstants.CATEGORY_ACTION && message.deletedAt == 0L) {
+ p0.let { mutableGroupMessageList.addAll(0, it) }
+ groupMessageList.value = mutableGroupMessageList
+ }
+ }
+ if(p0.isNotEmpty()){
+ val message=p0.get(p0.size-1)
+ CometChat.markAsRead(message.id,message.receiverUid,message.receiverType)
}
+ }
- })
+ }
+ override fun onError(p0: CometChatException?) {
+ Log.d(TAG, "fetchGroupMessage onError: " + p0?.message)
}
- } catch (e: NullPointerException) {
- e.printStackTrace()
- }
+
+ })
}
@WorkerThread
@@ -149,54 +154,10 @@ class MessageRepository {
if (groupMessageRequest == null) {
groupMessageRequest = MessagesRequest.MessagesRequestBuilder().setGUID(guid).setLimit(LIMIT).build()
+ fetchGroupMessageRequest(groupMessageRequest)
- groupMessageRequest!!.fetchPrevious(object : CometChat.CallbackListener>() {
- override fun onSuccess(p0: List?) {
- Log.e("groupMessageRequest","${p0?.size}")
- if (p0!=null) {
- for (message in p0) {
- if (message.category != CometChatConstants.CATEGORY_ACTION && message.deletedAt == 0L) {
- p0.let { mutableGroupMessageList.addAll(0, it) }
- groupMessageList.value = mutableGroupMessageList
- }
- }
- if(p0.isNotEmpty()){
- val message=p0.get(p0.size-1)
- CometChat.markAsRead(message.id,message.receiverUid,message.receiverType)
- }
- }
-
- }
-
- override fun onError(p0: CometChatException?) {
- Log.d(TAG, "fetchGroupMessage onError: " + p0?.message)
- }
-
-
- })
} else {
-
- groupMessageRequest!!.fetchPrevious(object : CometChat.CallbackListener>() {
- override fun onSuccess(p0: List?) {
- Log.e("groupMessageRequest 1","${p0?.size}")
- if (p0!=null) {
- for (message in p0) {
- if (message.category != CometChatConstants.CATEGORY_ACTION && message.deletedAt == 0L) {
- p0.let { mutableGroupMessageList.addAll(0, it) }
- groupMessageList.value = mutableGroupMessageList
- }
- }
- if(p0.isNotEmpty()){
- val message=p0.get(p0.size-1)
- CometChat.markAsRead(message.id,message.receiverUid,message.receiverType)
- }
- }
- }
-
- override fun onError(p0: CometChatException?) {
- Log.d(TAG,"fetchGroupMessage 1 onError: ")
- }
- })
+ fetchGroupMessageRequest(groupMessageRequest)
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt b/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt
index c44cf93..22a819d 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt
+++ b/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt
@@ -14,7 +14,7 @@ class StringContract {
const val API_KEY: String = "XXXXXXXXXXXXXX"
- const val REGION:String="XXXXXX"
+ const val REGION:String="XXXX"
lateinit var theme: Appearance.AppTheme
diff --git a/app/src/main/res/layout/message_edit_box.xml b/app/src/main/res/layout/message_edit_box.xml
index d2cb0d9..a598377 100755
--- a/app/src/main/res/layout/message_edit_box.xml
+++ b/app/src/main/res/layout/message_edit_box.xml
@@ -37,7 +37,6 @@
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
- android:layout_alignBottom="@id/frame"
android:layout_marginBottom="8dp"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
@@ -45,19 +44,14 @@
app:srcCompat="@drawable/ic_send_24dp" />
-
-
@@ -71,7 +65,7 @@
+ android:layout_marginEnd="16dp">
-