diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java
index e583a4b9..c332432a 100644
--- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java
+++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/AppearanceScreen.java
@@ -25,6 +25,7 @@ public class AppearanceScreen extends BaseScreenFragment {
private void createMainSection() {
(new ItemStatusIcon(findPreference(ItemStatusIcon.NAME), activity.getSettings())).populate();
(new ItemDragResize(findPreference(ItemDragResize.NAME), activity.getSettings())).populate();
+ (new ItemSuggestionSmoothScroll(findPreference(ItemSuggestionSmoothScroll.NAME), activity.getSettings())).populate();
ItemAlignment alignment = new ItemAlignment(findPreference(ItemAlignment.NAME), activity.getSettings());
ItemNumpadKeyHeight numpadKeyHeight = new ItemNumpadKeyHeight(findPreference(ItemNumpadKeyHeight.NAME), activity.getSettings());
diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSuggestionSmoothScroll.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSuggestionSmoothScroll.java
new file mode 100644
index 00000000..3401cb93
--- /dev/null
+++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/appearance/ItemSuggestionSmoothScroll.java
@@ -0,0 +1,27 @@
+package io.github.sspanak.tt9.preferences.screens.appearance;
+
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreferenceCompat;
+
+import io.github.sspanak.tt9.preferences.items.ItemClickable;
+import io.github.sspanak.tt9.preferences.settings.SettingsStore;
+
+public class ItemSuggestionSmoothScroll extends ItemClickable {
+ public static final String NAME = "pref_suggestion_smooth_scroll";
+ private final SettingsStore settings;
+
+ public ItemSuggestionSmoothScroll(Preference item, SettingsStore settings) {
+ super(item);
+ this.settings = settings;
+ }
+
+ @Override protected boolean onClick(Preference p) { return true; }
+
+ public ItemSuggestionSmoothScroll populate() {
+ if (item != null) {
+ ((SwitchPreferenceCompat) item).setChecked(settings.getSuggestionSmoothScroll());
+ }
+
+ return this;
+ }
+}
diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java
index 4019ca9b..5341771e 100644
--- a/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java
+++ b/app/src/main/java/io/github/sspanak/tt9/preferences/settings/SettingsUI.java
@@ -123,6 +123,10 @@ public class SettingsUI extends SettingsTyping {
return getStringifiedInt("pref_font_size", defaultSize);
}
+ public boolean getSuggestionSmoothScroll() {
+ return prefs.getBoolean("pref_suggestion_smooth_scroll", !DeviceInfo.noTouchScreen(context));
+ }
+
public int getTheme() {
return getStringifiedInt("pref_theme", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java
index 899be9e2..9a343103 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ui/tray/SuggestionsBar.java
@@ -270,7 +270,8 @@ public class SuggestionsBar {
return;
}
- mView.setItemAnimator(visibleSuggestions.size() <= SettingsStore.SUGGESTIONS_MAX + 1 ? animator : null);
+ boolean smooth = settings.getSuggestionSmoothScroll() && visibleSuggestions.size() <= SettingsStore.SUGGESTIONS_MAX + 1;
+ mView.setItemAnimator(smooth ? animator : null);
mSuggestionsAdapter.resetItems(selectedIndex);
if (selectedIndex > 0) {
@@ -361,7 +362,8 @@ public class SuggestionsBar {
return;
}
- mView.setItemAnimator(Math.abs(selectedIndex - lastScrollIndex) < SettingsStore.SUGGESTIONS_MAX ? animator : null);
+ boolean smooth = settings.getSuggestionSmoothScroll() && Math.abs(selectedIndex - lastScrollIndex) < SettingsStore.SUGGESTIONS_MAX;
+ mView.setItemAnimator(smooth ? animator : null);
mView.scrollToPosition(containsStem() && selectedIndex == 1 ? 0 : selectedIndex);
lastScrollIndex = selectedIndex;
}
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 46bfbb57..1a112c29 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -23,7 +23,7 @@
Автоматични главни букви на всеки ред
Започвай всеки ред с главна буква, дори и да е в средата на изречение.
Редактиране на думи
- Връщай списъка с предложения при натискане на Backspace на края на дума. (Не работи в някои приложения.)
+ Връщай списъка с думи при натискане на Backspace на края на дума. (Не работи в някои приложения.)
Езици
Изтрий всички
Дълъг интервал
@@ -126,6 +126,7 @@
Символ при двойно натисната „0“
Нов ред
Интервал
+ Плавно превъртане на списъка с думи
Бутони в обратен ред
Включете настройката, ако на първият ред са 7–8–9, вместо 1–2–3.
Изтрий неизбраните
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index db0f1923..a1ea17d4 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -48,6 +48,7 @@
Häufig verwendete Phrasen merken, um die Genauigkeit der Vorschläge zu verbessern.
Statusicon
Ein Icon anzeigen, wenn die Tastatureingabe aktiv ist.
+ Sanftes Scrollen der Wortliste
Die Reihenfolge der Tasten umkehren
Aktivieren Sie, wenn die Tastatur in der ersten Zeile 7–8–9 anstelle von 1–2–3 hat.
Laden abbrechen
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 186a7a77..bc7619b1 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -79,6 +79,7 @@
Error al descargar el diccionario para el idioma \"%1$s\". Verifique la conexión a Internet.
Carga del diccionario cancelada.
Diccionario cargado con éxito.
+ Desplazamiento suave de sugerencias
Orden de teclas inverso
Habilite la configuración si hay 7–8–9 en la primera fila, en lugar de 1–2–3.
Configuración inicial
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index a67e26f6..5b0650b0 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -63,8 +63,8 @@
Lente
Afficher les mots dans les champs de texte en les tapant. Désactiver lorsqu\'une application interrompt la saisie.
Méthode alternative de défilement des mots
- Activez si parfois vous ne pouvez pas voir toutes les suggestions ou vous avez des difficultés à les défiler.
- Afficher les touches de défilement des deux côtés de la liste de suggestions de mots.
+ Activez si parfois vous ne pouvez pas voir tous les mots ou vous avez des difficultés à les défiler.
+ Afficher les touches de défilement des deux côtés de la liste de mots.
Espace automatique
Majuscules automatiques
Ajouter automatiquement un espace après signes de ponctuation et mots.
@@ -107,6 +107,7 @@
Nouvelle ligne
Activer le redimensionnement et le déplacement du clavier en faisant glisser la barre d’état ou la touche Paramètres.
Caractère lorsque «0» est appuyé deux fois
+ Défilement fluide de la liste de mots
Inverser l\'ordre des clés
Activez le paramètre s\'il y a 7–8–9 sur le premier rang, au lieu de 1–2–3.
Supprimer les non sélectionnés
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 3775f69f..98f17a09 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -89,6 +89,7 @@
Abbassa il volume
Alza il volume
Nuova riga
+ Scorrimento fluido dei suggerimenti
Invertire l\'ordine delle chiavi
Abilita l\'impostazione se ci sono 7–8–9 sulla prima riga, invece di 1–2–3.
Configurazione iniziale
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index ec8fe68f..eaa57c42 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -62,6 +62,7 @@
לזכור ביטויים נפוצים כדי לשפר את דיוק ההצעות.
סמל מצב
הצגת סמל כאשר קלט המקלדת פעיל.
+ גלילה חלקה של הצעות
להפוך את סדר המקשים
הפעל את ההגדרה אם המקלדת כוללת את המספרים 7-8-9 בשורה הראשונה, במקום 1-2-3.
ביטול טעינה
diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml
index 5e77ccc0..fe9453e5 100644
--- a/app/src/main/res/values-lt/strings.xml
+++ b/app/src/main/res/values-lt/strings.xml
@@ -58,6 +58,7 @@
Tik žodžių sąrašas
Vibruoti paspaudus virtualų klavišą. (Neįmanoma visuose įrenginiuose)
Pagalba
+ Sklandus žodžių sąrašo slinkimas
Atvirkštinė klavišų tvarka
Įjunkite šį nustatymą jei pirmoje eilutėje turite 7–8–9, o ne 1–2–3.
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 2114ca0d..34c233e1 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -48,6 +48,7 @@
Veelgebruikte zinnen onthouden om de nauwkeurigheid van suggesties te verbeteren.
Statusicoon
Een icoon tonen wanneer toetsenbordinvoer actief is.
+ Vloeiend suggesties scrollen
De volgorde van de toetsen omkeren
Activeer als het toetsenbord 7–8–9 op de eerste rij heeft, in plaats van 1–2–3.
Laden annuleren
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 6aff8419..392099b5 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -109,6 +109,7 @@
Nova Linha
Espaço
Utilize essa opção se você possuir as teclas 7–8–9 na linha de cima, ao invés de 1–2–3.
+ Rolagem suave de sugestões
Inverter ordem das teclas
Limpar Não Selecionados
Sim
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index ae426985..0ad94fa7 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -103,6 +103,7 @@
(зажать)
Назад
Позвонить
+ Плавная прокрутка списка слов
Перевернутая клавиатура
Используйте настройку, если в первом ряду 7–8–9 вместо 1–2–3.
Удалить невыбранные
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index bea758f1..1ac26cdb 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -137,6 +137,7 @@
Yazı tipi boyutunu ayarla
Standart
+ Akıcı öneri kaydırma
Tuş Düzenini Tersine Çevir
Eğer ilk satırda 1–2–3 yerine 7–8–9 kullanıyorsanız bunu aktif edin.
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 8599a002..06c63ece 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -64,6 +64,7 @@
Лише список слів
Вібрувати при натисканні віртуальної клавіші. (Неможливо на всіх пристроях)
Допомога
+ Плавне гортання пропозицій
Зворотній порядок клавіш
Використовуйте це налаштування, якщо у вас в першому ряді 7–8–9 замість 1–2–3.
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c017f573..2ab64c60 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -99,6 +99,7 @@
Remember commonly used phrases to improve the suggestions accuracy.
Status Icon
Show an icon when keyboard input is active.
+ Smooth Suggestion Scrolling
Reverse Key Order
Enable if the keypad has 7–8–9 on the first row, instead of 1–2–3.
diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml
index 2e09c647..2bb914a9 100644
--- a/app/src/main/res/xml/prefs_screen_appearance.xml
+++ b/app/src/main/res/xml/prefs_screen_appearance.xml
@@ -51,6 +51,9 @@
+