make toolbar scrollable

This commit is contained in:
Helium314 2023-09-25 19:35:51 +02:00
parent 7074302798
commit 3447212447
2 changed files with 48 additions and 42 deletions

View file

@ -98,6 +98,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
private final Drawable mIncognitoIcon; private final Drawable mIncognitoIcon;
private final Drawable mToolbarArrowIcon; private final Drawable mToolbarArrowIcon;
private final ViewGroup mToolbar; private final ViewGroup mToolbar;
private final View mToolbarContainer;
private final ViewGroup mPinnedKeys; private final ViewGroup mPinnedKeys;
private final GradientDrawable mEnabledToolKeyBackground = new GradientDrawable(); private final GradientDrawable mEnabledToolKeyBackground = new GradientDrawable();
private final Drawable mDefaultBackground; private final Drawable mDefaultBackground;
@ -162,6 +163,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
mStripVisibilityGroup = new StripVisibilityGroup(this, mSuggestionsStrip); mStripVisibilityGroup = new StripVisibilityGroup(this, mSuggestionsStrip);
mPinnedKeys = findViewById(R.id.pinned_keys); mPinnedKeys = findViewById(R.id.pinned_keys);
mToolbar = findViewById(R.id.toolbar); mToolbar = findViewById(R.id.toolbar);
mToolbarContainer = findViewById(R.id.toolbar_container);
final ImageButton voiceKey = findViewById(R.id.suggestions_strip_voice_key); final ImageButton voiceKey = findViewById(R.id.suggestions_strip_voice_key);
final ImageButton clipboardKey = findViewById(R.id.suggestions_strip_clipboard_key); final ImageButton clipboardKey = findViewById(R.id.suggestions_strip_clipboard_key);
final ImageButton selectAllKey = findViewById(R.id.suggestions_strip_select_all_key); final ImageButton selectAllKey = findViewById(R.id.suggestions_strip_select_all_key);
@ -227,7 +229,6 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
mToolbar.findViewWithTag(pinnedKey).setBackground(mEnabledToolKeyBackground); mToolbar.findViewWithTag(pinnedKey).setBackground(mEnabledToolKeyBackground);
addKeyToPinnedKeys(pinnedKey, inflater); addKeyToPinnedKeys(pinnedKey, inflater);
} }
mToolbar.setVisibility(GONE);
colors.setKeyboardBackground(this); colors.setKeyboardBackground(this);
} }
@ -249,7 +250,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
if (pinnedVoiceKey != null) if (pinnedVoiceKey != null)
pinnedVoiceKey.setVisibility(currentSettingsValues.mShowsVoiceInputKey ? VISIBLE : GONE); pinnedVoiceKey.setVisibility(currentSettingsValues.mShowsVoiceInputKey ? VISIBLE : GONE);
mOtherKey.setImageDrawable(currentSettingsValues.mIncognitoModeEnabled ? mIncognitoIcon : mToolbarArrowIcon); mOtherKey.setImageDrawable(currentSettingsValues.mIncognitoModeEnabled ? mIncognitoIcon : mToolbarArrowIcon);
mOtherKey.setScaleX(currentSettingsValues.mIncognitoModeEnabled || mToolbar.getVisibility() != VISIBLE ? 1f : -1f); mOtherKey.setScaleX(currentSettingsValues.mIncognitoModeEnabled || mToolbarContainer.getVisibility() != VISIBLE ? 1f : -1f);
} }
public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) { public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
@ -268,7 +269,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
public void clear() { public void clear() {
mSuggestionsStrip.removeAllViews(); mSuggestionsStrip.removeAllViews();
removeAllDebugInfoViews(); removeAllDebugInfoViews();
if (mToolbar.getVisibility() != VISIBLE) if (mToolbarContainer.getVisibility() != VISIBLE)
mStripVisibilityGroup.showSuggestionsStrip(); mStripVisibilityGroup.showSuggestionsStrip();
dismissMoreSuggestionsPanel(); dismissMoreSuggestionsPanel();
for (final TextView word : mWordViews) { for (final TextView word : mWordViews) {
@ -500,7 +501,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
@Override @Override
public boolean onScroll(MotionEvent down, MotionEvent me, float deltaX, float deltaY) { public boolean onScroll(MotionEvent down, MotionEvent me, float deltaX, float deltaY) {
final float dy = me.getY() - down.getY(); final float dy = me.getY() - down.getY();
if (deltaY > 0 && dy < 0) { if (mToolbarContainer.getVisibility() != VISIBLE && deltaY > 0 && dy < 0) {
return showMoreSuggestions(); return showMoreSuggestions();
} }
return false; return false;
@ -634,16 +635,16 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
} }
} }
if (view == mOtherKey) { if (view == mOtherKey) {
if (mToolbar.getVisibility() == VISIBLE) { if (mToolbarContainer.getVisibility() == VISIBLE) {
mToolbar.setVisibility(GONE); mToolbarContainer.setVisibility(GONE);
mSuggestionsStrip.setVisibility(VISIBLE); mSuggestionsStrip.setVisibility(VISIBLE);
mPinnedKeys.setVisibility(VISIBLE); mPinnedKeys.setVisibility(VISIBLE);
} else { } else {
mToolbar.setVisibility(VISIBLE); mToolbarContainer.setVisibility(VISIBLE);
mSuggestionsStrip.setVisibility(GONE); mSuggestionsStrip.setVisibility(GONE);
mPinnedKeys.setVisibility(GONE); mPinnedKeys.setVisibility(GONE);
} }
mOtherKey.setScaleX(mOtherKey.getDrawable() == mIncognitoIcon || mToolbar.getVisibility() != VISIBLE ? 1f : -1f); mOtherKey.setScaleX(mOtherKey.getDrawable() == mIncognitoIcon || mToolbarContainer.getVisibility() != VISIBLE ? 1f : -1f);
} }

View file

@ -40,12 +40,16 @@
android:layout_weight="0" android:layout_weight="0"
style="?attr/suggestionWordStyle" style="?attr/suggestionWordStyle"
android:contentDescription="@string/more_keys_strip_description" /> android:contentDescription="@string/more_keys_strip_description" />
<HorizontalScrollView
android:id="@+id/toolbar_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<LinearLayout <LinearLayout
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
style="?attr/suggestionWordStyle"> style="?attr/suggestionWordStyle">
<include <include
android:id="@+id/suggestions_strip_voice_key" android:id="@+id/suggestions_strip_voice_key"
@ -75,6 +79,7 @@
android:id="@+id/suggestions_strip_down_key" android:id="@+id/suggestions_strip_down_key"
layout="@layout/suggestions_strip_down_key" /> layout="@layout/suggestions_strip_down_key" />
</LinearLayout> </LinearLayout>
</HorizontalScrollView>
<!-- Provide audio and haptic feedback by ourselves based on the keyboard settings. <!-- Provide audio and haptic feedback by ourselves based on the keyboard settings.
We just need to ignore the system's audio and haptic feedback settings. --> We just need to ignore the system's audio and haptic feedback settings. -->
<!-- todo: sth is fishy with that maxwidth <!-- todo: sth is fishy with that maxwidth