diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/common/DiaryCircumstancesTextView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/common/DiaryCircumstancesTextView.kt index 7476941dd23f594b98e56d3f4312ab95852e9360..11db3cab18d1285d54c2c1d70cd85381ec0f67e5 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/common/DiaryCircumstancesTextView.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/ui/day/tabs/common/DiaryCircumstancesTextView.kt @@ -1,8 +1,10 @@ package de.rki.coronawarnapp.contactdiary.ui.day.tabs.common import android.content.Context +import android.text.InputType import android.util.AttributeSet import android.view.LayoutInflater +import android.view.inputmethod.EditorInfo import android.widget.EditText import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout @@ -29,9 +31,11 @@ class DiaryCircumstancesTextView @JvmOverloads constructor( Timber.v("Focused on %s", v) } else { Timber.v("Lost focus on %s", v) - afterTextChangedListener?.invoke(text.toString()) + notifyTextChanged(text.toString()) } } + imeOptions = EditorInfo.IME_ACTION_DONE + setRawInputType(InputType.TYPE_CLASS_TEXT) } infoButton = findViewById(R.id.info_button) } @@ -41,6 +45,11 @@ class DiaryCircumstancesTextView @JvmOverloads constructor( super.onFinishInflate() } + private fun notifyTextChanged(text: String) { + // Prevent Copy&Paste inserting new lines. + afterTextChangedListener?.invoke(text.trim().replace("\n", "")) + } + fun setInfoButtonClickListener(listener: () -> Unit) { infoButton.setOnClickListener { listener() } } diff --git a/Corona-Warn-App/src/main/res/layout/view_diary_circumstances_textview.xml b/Corona-Warn-App/src/main/res/layout/view_diary_circumstances_textview.xml index b833f010a803977d38fb0b401407edd0bb30fbda..17a22866f6708fd479dc41c16d4257a5908205ce 100644 --- a/Corona-Warn-App/src/main/res/layout/view_diary_circumstances_textview.xml +++ b/Corona-Warn-App/src/main/res/layout/view_diary_circumstances_textview.xml @@ -9,13 +9,10 @@ <com.google.android.material.textfield.TextInputLayout android:id="@+id/input_layout" - style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Dense" + style="@style/ContactDiaryCircumstancesTextInputLayout" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:hint="@string/contact_diary_person_encounter_circumstances_hint" - android:scrollHorizontally="false" - app:layout_constraintBottom_toBottomOf="parent" + app:hintEnabled="false" app:layout_constraintEnd_toStartOf="@id/info_button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/environment_group"> @@ -24,23 +21,20 @@ android:id="@+id/input" android:layout_width="match_parent" android:layout_height="wrap_content" + android:hint="@string/contact_diary_person_encounter_circumstances_hint" + android:inputType="textMultiLine" android:maxLength="250" + android:padding="@dimen/spacing_tiny" tools:text="This was a triumph. I'm making a note here; 'Huge success'. It's hard to overstate my satisfaction. We do what we must, because we can." /> </com.google.android.material.textfield.TextInputLayout> - <ImageView + <ImageButton android:id="@+id/info_button" - android:layout_width="@dimen/button_icon" - android:layout_height="@dimen/button_icon" - android:layout_marginTop="2dp" - android:background="?selectableItemBackground" - android:contentDescription="@string/statistics_info_button" - android:padding="10dp" - android:src="@drawable/ic_info" + style="@style/ContactDiaryInfoButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@+id/input_layout" - app:layout_constraintTop_toTopOf="@id/input_layout" - app:tint="@color/colorAccent" /> + app:layout_constraintTop_toBottomOf="@id/environment_group" /> </merge> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values/styles.xml b/Corona-Warn-App/src/main/res/values/styles.xml index 0509fe158a87f5fd075d6a7d3f22ecdf52b14c4e..863fde67a0d49cfcf7de8abc0f38d1478b9fd7ff 100644 --- a/Corona-Warn-App/src/main/res/values/styles.xml +++ b/Corona-Warn-App/src/main/res/values/styles.xml @@ -398,6 +398,31 @@ <item name="android:background">@drawable/contact_diary_card_ripple</item> </style> + <style name="ContactDiaryCircumstancesTextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"> + <item name="boxBackgroundColor">@color/colorBackground</item> + <item name="android:textColorHint">@color/colorTextPrimary2</item> + <item name="android:textSize">@dimen/font_small</item> + <item name="hintTextColor">@color/colorTextPrimary2</item> + <item name="boxCornerRadiusBottomEnd">@dimen/spacing_mega_tiny</item> + <item name="boxCornerRadiusBottomStart">@dimen/spacing_mega_tiny</item> + <item name="boxCornerRadiusTopEnd">@dimen/spacing_mega_tiny</item> + <item name="boxCornerRadiusTopStart">@dimen/spacing_mega_tiny</item> + <item name="boxStrokeWidth">0dp</item> + <item name="boxStrokeWidthFocused">0dp</item> + </style> + + <style name="ContactDiaryInfoButton" parent="buttonIcon"> + <item name="android:height">@dimen/button_icon</item> + <item name="android:width">@dimen/button_icon</item> + <item name="android:src">@drawable/ic_info</item> + <item name="android:paddingStart">12dp</item> + <item name="android:paddingEnd">12dp</item> + <item name="android:paddingTop">7dp</item> + <item name="android:paddingBottom">7dp</item> + <item name="android:contentDescription">@string/statistics_info_button</item> + <item name="android:tint">@color/colorAccent</item> + </style> + <style name="StatisticsCardInfoButton" parent="buttonIcon"> <item name="android:height">@dimen/button_icon</item> <item name="android:width">@dimen/button_icon</item>