Optimize layout and make it accessible

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2022-07-28 22:22:51 +02:00
parent 14d827c88a
commit 09ddc86c40
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
7 changed files with 72 additions and 28 deletions

View File

@ -24,6 +24,7 @@ import android.annotation.SuppressLint
import android.text.Editable
import android.text.TextWatcher
import androidx.recyclerview.widget.RecyclerView
import com.nextcloud.talk.R
import com.nextcloud.talk.databinding.PollCreateOptionsItemBinding
import com.nextcloud.talk.utils.EmojiTextInputEditText
@ -43,13 +44,13 @@ class PollCreateOptionViewHolder(
) {
textListener?.let {
binding.pollOptionText.removeTextChangedListener(it)
binding.pollOptionTextEdit.removeTextChangedListener(it)
}
binding.pollOptionText.setText(pollCreateOptionItem.pollOption)
binding.pollOptionTextEdit.setText(pollCreateOptionItem.pollOption)
if (focus) {
itemsListener.requestFocus(binding.pollOptionText)
itemsListener.requestFocus(binding.pollOptionTextEdit)
}
binding.pollOptionDelete.setOnClickListener {
@ -57,7 +58,16 @@ class PollCreateOptionViewHolder(
}
textListener = getTextWatcher(pollCreateOptionItem, itemsListener)
binding.pollOptionText.addTextChangedListener(textListener)
binding.pollOptionTextEdit.addTextChangedListener(textListener)
binding.pollOptionTextInputLayout.hint = String.format(
binding.pollOptionTextInputLayout.resources.getString(R.string.polls_option_hint),
position + 1
)
binding.pollOptionDelete.contentDescription = String.format(
binding.pollOptionTextInputLayout.resources.getString(R.string.polls_option_delete),
position + 1
)
}
private fun getTextWatcher(

View File

@ -29,7 +29,7 @@ class PollCreateOptionsAdapter(
private val clickListener: PollCreateOptionsItemListener
) : RecyclerView.Adapter<PollCreateOptionViewHolder>() {
internal var list: ArrayList<PollCreateOptionItem> = ArrayList<PollCreateOptionItem>()
internal var list: ArrayList<PollCreateOptionItem> = ArrayList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PollCreateOptionViewHolder {
val itemBinding = PollCreateOptionsItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)

View File

@ -102,7 +102,7 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener
dismiss()
}
binding.pollCreateQuestion.addTextChangedListener(object : TextWatcher {
binding.pollCreateQuestionTextEdit.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable) {
// unused atm
}
@ -161,8 +161,8 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener
}
override fun requestFocus(textField: EditText) {
if (binding.pollCreateQuestion.text.isBlank()) {
binding.pollCreateQuestion.requestFocus()
if (binding.pollCreateQuestionTextEdit.text?.isBlank() == true) {
binding.pollCreateQuestionTextEdit.requestFocus()
} else {
textField.requestFocus()
}

View File

@ -32,33 +32,51 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="@dimen/dialog_padding">
android:paddingTop="@dimen/dialog_padding_top_bottom">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dialog_padding"
android:paddingEnd="@dimen/dialog_padding"
android:paddingBottom="@dimen/standard_half_padding"
android:text="@string/polls_question"
android:textColor="@color/colorPrimary"
android:textStyle="bold" />
<EditText
android:id="@+id/poll_create_question"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/poll_create_question_text_input_layout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dialog_padding"
android:layout_marginEnd="@dimen/dialog_padding"
android:inputType="textMultiLine"
tools:ignore="Autofill,LabelFor">
android:hint="@string/polls_question_hint"
android:minHeight="@dimen/min_size_clickable_area"
app:boxStrokeColor="@color/colorPrimary"
app:errorTextAppearance="@style/ErrorAppearance"
app:hintTextColor="@color/colorPrimary">
<requestFocus />
</EditText>
<com.nextcloud.talk.utils.EmojiTextInputEditText
android:id="@+id/poll_create_question_text_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:inputType="textMultiLine"
android:singleLine="true"
android:textAlignment="viewStart">
<requestFocus />
</com.nextcloud.talk.utils.EmojiTextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:paddingTop="@dimen/standard_padding"
android:paddingBottom="@dimen/standard_half_padding"
android:paddingStart="@dimen/dialog_padding"
android:paddingEnd="@dimen/dialog_padding"
android:text="@string/polls_options"
@ -77,19 +95,16 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dialog_padding"
android:layout_marginTop="@dimen/standard_half_margin"
android:layout_marginEnd="@dimen/dialog_padding"
android:minHeight="@dimen/min_size_clickable_area"
android:text="@string/polls_add_option"
app:cornerRadius="@dimen/button_corner_radius"
app:icon="@drawable/ic_add_grey600_24px"
app:layout_constraintEnd_toEndOf="parent" />
app:icon="@drawable/ic_add_grey600_24px" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:layout_marginBottom="@dimen/standard_half_margin"
android:paddingStart="@dimen/dialog_padding"
android:paddingEnd="@dimen/dialog_padding"
android:text="@string/polls_settings"
@ -119,12 +134,12 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/standard_margin"
android:layout_marginTop="@dimen/standard_half_margin"
android:gravity="end"
android:orientation="horizontal"
android:paddingStart="@dimen/dialog_padding"
android:paddingEnd="@dimen/dialog_padding"
android:paddingBottom="@dimen/standard_padding">
android:paddingBottom="@dimen/dialog_padding_top_bottom">
<com.google.android.material.button.MaterialButton
android:id="@+id/poll_dismiss"

View File

@ -28,17 +28,32 @@
android:minHeight="@dimen/min_size_clickable_area"
android:orientation="horizontal"
android:paddingStart="@dimen/dialog_padding"
android:paddingBottom="@dimen/standard_half_margin"
android:paddingEnd="@dimen/zero"
tools:background="@color/white">
<EditText
android:id="@+id/poll_option_text"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/poll_option_text_input_layout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:minHeight="@dimen/min_size_clickable_area"
android:layout_marginEnd="@dimen/standard_half_margin"
android:layout_weight="1"
android:inputType="text"
android:singleLine="true"
tools:ignore="Autofill,LabelFor" />
app:boxStrokeColor="@color/colorPrimary"
app:errorTextAppearance="@style/ErrorAppearance"
app:hintTextColor="@color/colorPrimary">
<com.nextcloud.talk.utils.EmojiTextInputEditText
android:id="@+id/poll_option_text_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:inputType="text"
android:singleLine="true"
android:textAlignment="viewStart" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/poll_option_delete"
@ -46,7 +61,7 @@
android:layout_width="@dimen/min_size_clickable_area"
android:layout_height="@dimen/min_size_clickable_area"
android:layout_marginEnd="@dimen/standard_half_margin"
android:contentDescription="@string/nc_action_open_main_menu"
android:contentDescription="@string/polls_option_delete"
app:cornerRadius="@dimen/button_corner_radius"
app:icon="@drawable/ic_baseline_close_24"
app:iconTint="@color/fontAppbar" />

View File

@ -60,6 +60,7 @@
<dimen name="standard_half_margin">8dp</dimen>
<dimen name="default_login_width">400dp</dimen>
<dimen name="dialog_padding">24dp</dimen>
<dimen name="dialog_padding_top_bottom">18dp</dimen>
<dimen name="call_grid_item_min_height">180dp</dimen>
<dimen name="call_controls_height">110dp</dimen>

View File

@ -543,7 +543,10 @@
<string name="polls_max_votes_reached">You can\'t vote with more options for this poll.</string>
<string name="polls_results_subtitle">Results</string>
<string name="polls_question">Question</string>
<string name="polls_question_hint">Your question</string>
<string name="polls_options">Options</string>
<string name="polls_option_hint">Option %1$s</string>
<string name="polls_option_delete">Delete option %1$s</string>
<string name="polls_settings">Settings</string>
<string name="polls_private_poll">Private poll</string>
<string name="polls_multiple_answers">Multiple answers</string>