diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java index bbf2e24b2..1a1cc2e93 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/KeyboardView.java @@ -382,9 +382,22 @@ public class KeyboardView extends View { } else { final Rect padding = mKeyBackgroundPadding; bgWidth = keyWidth + padding.left + padding.right; - bgHeight = keyHeight + padding.top + padding.bottom; + // absurdly horrible workaround, because it's not possible to set padding as percentage of height in btn_keyboard_spacebar_lxx_base + if (mColors.isCustom && key.getBackgroundType() == Key.BACKGROUND_TYPE_SPACEBAR) { + Rect p = new Rect(); + background.getPadding(p); + if (p.top != 0) { + bgHeight = (keyHeight + padding.top + padding.bottom) / 2; + bgY = -padding.top + bgHeight / 2; + } else { + bgHeight = keyHeight + padding.top + padding.bottom; + bgY = -padding.top; + } + } else { + bgHeight = keyHeight + padding.top + padding.bottom; + bgY = -padding.top; + } bgX = -padding.left; - bgY = -padding.top; } if (mColors.isCustom) setCustomKeyBackgroundColor(key, getKeyboard(), background); diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java index 63614d2d1..a18b91b73 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/emoji/EmojiPalettesView.java @@ -21,11 +21,14 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PorterDuff; +import android.graphics.Rect; import android.util.AttributeSet; +import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; @@ -271,6 +274,10 @@ public final class EmojiPalettesView extends LinearLayout mSpacebar.setTag(Constants.CODE_SPACE); mSpacebar.setOnTouchListener(this); mSpacebar.setOnClickListener(this); + + mEmojiLayoutParams.setKeyProperties(mSpacebar); + mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon); + final Colors colors = Settings.getInstance().getCurrent().mColors; if (colors.isCustom) { DrawableCompat.setTintList(mAlphabetKeyLeft.getBackground(), colors.functionalKeyStateList); @@ -281,9 +288,18 @@ public final class EmojiPalettesView extends LinearLayout DrawableCompat.setTintMode(mDeleteKey.getBackground(), PorterDuff.Mode.MULTIPLY); getBackground().setColorFilter(colors.backgroundFilter); mEmojiCategoryPageIndicatorView.setColors(colors.accent, colors.adjustedBackground); + + // another weird workaround because it's not possible to set padding as percentage of height in btn_keyboard_spacebar_lxx_base + // of course different than in KeyboardView... + Rect p = new Rect(); + mSpacebar.getBackground().getPadding(p); + if (p.top != 0) { + final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mSpacebar.getLayoutParams(); + lp.topMargin = p.top; + lp.bottomMargin = p.top; + mSpacebar.setLayoutParams(lp); + } } - mEmojiLayoutParams.setKeyProperties(mSpacebar); - mSpacebarIcon = findViewById(R.id.emoji_keyboard_space_icon); } @Override diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java index af0ed029e..cd2125dce 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/suggestions/SuggestionStripView.java @@ -190,6 +190,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick // set to keyboard_background_lxx_base (just white drawable), but NOT when set to // btn_suggestion_lxx_base (state drawable with selector) or keyboard_suggest_strip_lxx_base_border (layer-list) // why is this? then it's necessary to set tint list for voice/clipboard/other keys and all word views separately + // it seems to work in other places, e.g. for btn_keyboard_spacebar_lxx_base... though maybe that's the weirdly nested layer list? // todo (later): when fixing this, revert changes in themes-lxx-base[-border] (in todo) // this would allow having a different background shape in pressed state DrawableCompat.setTintList(getBackground(), colors.backgroundStateList); diff --git a/app/src/main/res/drawable/btn_keyboard_spacebar_lxx_base.xml b/app/src/main/res/drawable/btn_keyboard_spacebar_lxx_base.xml index f0950d226..078a88950 100644 --- a/app/src/main/res/drawable/btn_keyboard_spacebar_lxx_base.xml +++ b/app/src/main/res/drawable/btn_keyboard_spacebar_lxx_base.xml @@ -3,20 +3,22 @@ - + + - + +