@@ -54,8 +54,9 @@ class RichTextComposerLayout @JvmOverloads constructor(
54
54
55
55
private var currentConstraintSetId: Int = - 1
56
56
private val animationDuration = 100L
57
+ private val maxEditTextLinesWhenCollapsed = 12
57
58
58
- private var isFullScreen = false
59
+ private val isFullScreen: Boolean get() = currentConstraintSetId == R .layout.composer_rich_text_layout_constraint_set_fullscreen
59
60
60
61
var isTextFormattingEnabled = true
61
62
set(value) {
@@ -104,10 +105,10 @@ class RichTextComposerLayout @JvmOverloads constructor(
104
105
collapse(false )
105
106
106
107
views.richTextComposerEditText.addTextChangedListener(
107
- TextChangeListener ({ callback?.onTextChanged(it) }, :: updateTextFieldBorder)
108
+ TextChangeListener ({ callback?.onTextChanged(it) }, { updateTextFieldBorder() } )
108
109
)
109
110
views.plainTextComposerEditText.addTextChangedListener(
110
- TextChangeListener ({ callback?.onTextChanged(it) }, :: updateTextFieldBorder)
111
+ TextChangeListener ({ callback?.onTextChanged(it) }, { updateTextFieldBorder() } )
111
112
)
112
113
113
114
views.composerRelatedMessageCloseButton.setOnClickListener {
@@ -196,8 +197,9 @@ class RichTextComposerLayout @JvmOverloads constructor(
196
197
button.isSelected = menuState.reversedActions.contains(action)
197
198
}
198
199
199
- private fun updateTextFieldBorder (isExpanded : Boolean ) {
200
- val borderResource = if (isExpanded) {
200
+ private fun updateTextFieldBorder () {
201
+ val isExpanded = editText.editableText.lines().count() > 1
202
+ val borderResource = if (isExpanded || isFullScreen) {
201
203
R .drawable.bg_composer_rich_edit_text_expanded
202
204
} else {
203
205
R .drawable.bg_composer_rich_edit_text_single_line
@@ -240,8 +242,21 @@ class RichTextComposerLayout @JvmOverloads constructor(
240
242
it.applyTo(this )
241
243
}
242
244
243
- updateTextFieldBorder(newValue )
245
+ updateTextFieldBorder()
244
246
updateEditTextVisibility()
247
+
248
+ updateEditTextFullScreenState(views.richTextComposerEditText, newValue)
249
+ updateEditTextFullScreenState(views.plainTextComposerEditText, newValue)
250
+ }
251
+
252
+ private fun updateEditTextFullScreenState (editText : EditText , isFullScreen : Boolean ) {
253
+ if (isFullScreen) {
254
+ editText.maxLines = Int .MAX_VALUE
255
+ // This is a workaround to fix incorrect scroll position when maximised
256
+ post { editText.requestLayout() }
257
+ } else {
258
+ editText.maxLines = maxEditTextLinesWhenCollapsed
259
+ }
245
260
}
246
261
247
262
private fun applyNewConstraintSet (animate : Boolean , transitionComplete : (() -> Unit )? ) {
0 commit comments