mirror of
https://github.com/element-hq/element-android
synced 2024-11-24 10:25:35 +03:00
Refactor to handle more cases
This commit is contained in:
parent
3ea7b37df3
commit
dc230f1c30
1 changed files with 28 additions and 8 deletions
|
@ -107,15 +107,9 @@ abstract class FormEditTextItem : VectorEpoxyModel<FormEditTextItem.Holder>() {
|
|||
}
|
||||
|
||||
holder.textInputEditText.isEnabled = enabled
|
||||
inputType?.let { holder.textInputEditText.inputType = it }
|
||||
imeOptions?.let { holder.textInputEditText.imeOptions = it }
|
||||
|
||||
if (singleLine) {
|
||||
holder.textInputEditText.maxLines = 1
|
||||
holder.textInputEditText.minLines = 1
|
||||
imeOptions ?: run { holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NEXT }
|
||||
inputType ?: run { holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT) }
|
||||
}
|
||||
configureInputType(holder)
|
||||
configureImeOptions(holder)
|
||||
|
||||
holder.textInputEditText.addTextChangedListenerOnce(onTextChangeListener)
|
||||
holder.textInputEditText.setOnEditorActionListener(editorActionListener)
|
||||
|
@ -131,6 +125,32 @@ abstract class FormEditTextItem : VectorEpoxyModel<FormEditTextItem.Holder>() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the inputType of the EditText, input type should be always defined
|
||||
* especially when we want to use a single line, we set the InputType to InputType.TYPE_CLASS_TEXT
|
||||
* while the default for the EditText is InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE
|
||||
*/
|
||||
private fun configureInputType(holder: Holder) =
|
||||
inputType?.let {
|
||||
holder.textInputEditText.setRawInputType(it)
|
||||
} ?: when (singleLine) {
|
||||
true -> holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT)
|
||||
false -> holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE)
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the imeOptions of the EditText, when imeOptions are not defined by user
|
||||
* EditorInfo.IME_ACTION_NEXT will be used for singleLine EditTexts to disable "new line"
|
||||
* while EditorInfo.IME_ACTION_NONE will be used for all the other cases
|
||||
*/
|
||||
private fun configureImeOptions(holder: Holder) =
|
||||
imeOptions?.let {
|
||||
holder.textInputEditText.imeOptions = it
|
||||
} ?: when (singleLine) {
|
||||
true -> holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NEXT
|
||||
false -> holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NONE
|
||||
}
|
||||
|
||||
override fun shouldSaveViewState(): Boolean {
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue