From f8b7c4dea9e07abb8a285c9ea2bf839f515231ac Mon Sep 17 00:00:00 2001 From: Winston Sung Date: Fri, 14 Mar 2025 15:51:48 +0800 Subject: [PATCH] Add "selected" styles to in-app language picker Bug: #104 Change-Id: Ia16763e7404b42970c61fcfa5b4114790d150d7c --- .../ccip/ui/LanguagePreferenceFragment.kt | 15 ++++++ .../main/res/drawable/ic_baseline_done_24.xml | 10 ++++ .../main/res/layout/item_option_language.xml | 46 +++++++++++++------ 3 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 app/src/main/res/drawable/ic_baseline_done_24.xml diff --git a/app/src/main/java/app/opass/ccip/ui/LanguagePreferenceFragment.kt b/app/src/main/java/app/opass/ccip/ui/LanguagePreferenceFragment.kt index 2103dea8..454c8d7a 100644 --- a/app/src/main/java/app/opass/ccip/ui/LanguagePreferenceFragment.kt +++ b/app/src/main/java/app/opass/ccip/ui/LanguagePreferenceFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatDelegate import androidx.core.os.LocaleListCompat @@ -82,6 +83,7 @@ class LanguagePreferenceFragment : DialogFragment() { ) ) { item -> dialog?.dismiss() + AppCompatDelegate.setApplicationLocales( ( if (item.languageTag == "x-default") { @@ -126,12 +128,25 @@ class LanguagePreferenceAdapter( override fun onBindViewHolder(holder: LanguagePreferenceViewHolder, position: Int) { val item = items[position] + val isSelected = ( + if (item.languageTag == "x-default") { + AppCompatDelegate.getApplicationLocales() == LocaleListCompat.getEmptyLocaleList() + } else { + AppCompatDelegate.getApplicationLocales() == LocaleListCompat.forLanguageTags(item.languageTag) + } + ) + holder.localName.text = item.localName holder.translatedName.text = item.translatedName + + if (!isSelected) { + holder.selectedIcon.setImageDrawable(null) + } } } class LanguagePreferenceViewHolder(view: View) : RecyclerView.ViewHolder(view) { val localName: TextView = view.findViewById(R.id.option_local_name) val translatedName: TextView = view.findViewById(R.id.option_translated_name) + val selectedIcon: ImageView = view.findViewById(R.id.icon_selected) } diff --git a/app/src/main/res/drawable/ic_baseline_done_24.xml b/app/src/main/res/drawable/ic_baseline_done_24.xml new file mode 100644 index 00000000..031d3d6f --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_done_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/item_option_language.xml b/app/src/main/res/layout/item_option_language.xml index 1eff6b46..527ca2ca 100644 --- a/app/src/main/res/layout/item_option_language.xml +++ b/app/src/main/res/layout/item_option_language.xml @@ -1,28 +1,46 @@ - + android:background="?attr/selectableItemBackground" + android:focusable="true" + android:orientation="vertical"> + - + + + +