diff --git a/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java b/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java
index 85deefb86..4fa989e81 100644
--- a/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java
+++ b/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java
@@ -659,6 +659,7 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy
invalidateKey(shortcutKey);
}
+ // the whole language on spacebar thing could probably be simplified quite a bit
public void startDisplayLanguageOnSpacebar(final boolean subtypeChanged,
final int languageOnSpacebarFormatType,
final boolean hasMultipleEnabledIMEsOrSubtypes) {
@@ -799,13 +800,16 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy
paint.setTextAlign(Align.CENTER);
paint.setTypeface(Typeface.DEFAULT);
paint.setTextSize(mLanguageOnSpacebarTextSize);
- final String languageText;
- if (DebugFlags.DEBUG_ENABLED) {
+ final String customText = Settings.getInstance().getCurrent().mSpaceBarText;
+ final String spaceText;
+ if (!customText.isEmpty()) {
+ spaceText = customText;
+ } else if (DebugFlags.DEBUG_ENABLED) {
final String l = KeyboardSwitcher.getInstance().getLocaleAndConfidenceInfo();
- languageText = l != null ? l : layoutLanguageOnSpacebar(paint, keyboard.mId.mSubtype, width);
+ spaceText = l != null ? l : layoutLanguageOnSpacebar(paint, keyboard.mId.mSubtype, width);
}
else
- languageText = layoutLanguageOnSpacebar(paint, keyboard.mId.mSubtype, width);
+ spaceText = layoutLanguageOnSpacebar(paint, keyboard.mId.mSubtype, width);
// Draw language text with shadow
final float descent = paint.descent();
final float textHeight = -paint.ascent() + descent;
@@ -818,7 +822,11 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy
}
paint.setColor(mLanguageOnSpacebarTextColor);
paint.setAlpha(mLanguageOnSpacebarAnimAlpha);
- canvas.drawText(languageText, width / 2f, baseline - descent, paint);
+ if (!fitsTextIntoWidth(width, spaceText, paint)) {
+ final float textWidth = TypefaceUtils.getStringWidth(spaceText, paint);
+ paint.setTextScaleX((width - mLanguageOnSpacebarHorizontalMargin * 2) / textWidth);
+ }
+ canvas.drawText(spaceText, width / 2f, baseline - descent, paint);
paint.clearShadowLayer();
paint.setTextScaleX(1.0f);
}
diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
index b94e916b1..df1435353 100644
--- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
+++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java
@@ -164,6 +164,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
public static final String PREF_ABC_AFTER_CLIP = "abc_after_clip";
public static final String PREF_ABC_AFTER_SYMBOL_SPACE = "abc_after_symbol_space";
public static final String PREF_REMOVE_REDUNDANT_POPUPS = "remove_redundant_popups";
+ public static final String PREF_SPACE_BAR_TEXT = "space_bar_text";
// Emoji
public static final String PREF_EMOJI_RECENT_KEYS = "emoji_recent_keys";
diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
index 92e755fc5..a7426326d 100644
--- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
+++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java
@@ -117,6 +117,7 @@ public class SettingsValues {
public final boolean mAlphaAfterClipHistoryEntry;
public final boolean mAlphaAfterSymbolAndSpace;
public final boolean mRemoveRedundantPopups;
+ public final String mSpaceBarText;
// From the input box
@NonNull
@@ -264,6 +265,7 @@ public class SettingsValues {
mAlphaAfterClipHistoryEntry = prefs.getBoolean(Settings.PREF_ABC_AFTER_CLIP, false);
mAlphaAfterSymbolAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, true);
mRemoveRedundantPopups = prefs.getBoolean(Settings.PREF_REMOVE_REDUNDANT_POPUPS, true);
+ mSpaceBarText = prefs.getString(Settings.PREF_SPACE_BAR_TEXT, "");
}
public boolean isApplicationSpecifiedCompletionsOn() {
diff --git a/app/src/main/java/helium314/keyboard/latin/utils/LanguageOnSpacebarUtils.java b/app/src/main/java/helium314/keyboard/latin/utils/LanguageOnSpacebarUtils.java
index 3d70cb21e..d4a26999c 100644
--- a/app/src/main/java/helium314/keyboard/latin/utils/LanguageOnSpacebarUtils.java
+++ b/app/src/main/java/helium314/keyboard/latin/utils/LanguageOnSpacebarUtils.java
@@ -32,8 +32,9 @@ public final class LanguageOnSpacebarUtils {
// This utility class is not publicly instantiable.
}
- public static int getLanguageOnSpacebarFormatType(
- @NonNull final RichInputMethodSubtype subtype) {
+ public static int getLanguageOnSpacebarFormatType(@NonNull final RichInputMethodSubtype subtype) {
+ if (!Settings.getInstance().getCurrent().mSpaceBarText.isEmpty())
+ return FORMAT_TYPE_FULL_LOCALE;
if (subtype.isNoLanguage()) {
return FORMAT_TYPE_FULL_LOCALE;
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2536ce1f7..8d1cf5e3b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -305,6 +305,8 @@
Keyboard height scale
Bottom padding scale
+
+ Custom text on space bar
English (UK)
diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml
index ea44b42ca..603132cbc 100644
--- a/app/src/main/res/xml/prefs_screen_appearance.xml
+++ b/app/src/main/res/xml/prefs_screen_appearance.xml
@@ -101,6 +101,12 @@
latin:minValue="0"
latin:maxValue="500" />
+
+