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,41 +40,46 @@
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" />
<LinearLayout <HorizontalScrollView
android:id="@+id/toolbar" android:id="@+id/toolbar_container"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="horizontal" android:visibility="gone">
android:visibility="gone" <LinearLayout
style="?attr/suggestionWordStyle"> android:id="@+id/toolbar"
<include android:layout_width="wrap_content"
android:id="@+id/suggestions_strip_voice_key" android:layout_height="match_parent"
layout="@layout/suggestions_strip_voice_key" /> android:orientation="horizontal"
<include style="?attr/suggestionWordStyle">
android:id="@+id/suggestions_strip_clipboard_key" <include
layout="@layout/suggestions_strip_clipboard_key" /> android:id="@+id/suggestions_strip_voice_key"
<include layout="@layout/suggestions_strip_voice_key" />
android:id="@+id/suggestions_strip_select_all_key" <include
layout="@layout/suggestions_strip_select_all_key" /> android:id="@+id/suggestions_strip_clipboard_key"
<include layout="@layout/suggestions_strip_clipboard_key" />
android:id="@+id/suggestions_strip_one_handed_key" <include
layout="@layout/suggestions_strip_one_handed_key" /> android:id="@+id/suggestions_strip_select_all_key"
<include layout="@layout/suggestions_strip_select_all_key" />
android:id="@+id/suggestions_strip_settings_key" <include
layout="@layout/suggestions_strip_settings_key" /> android:id="@+id/suggestions_strip_one_handed_key"
<include layout="@layout/suggestions_strip_one_handed_key" />
android:id="@+id/suggestions_strip_left_key" <include
layout="@layout/suggestions_strip_left_key" /> android:id="@+id/suggestions_strip_settings_key"
<include layout="@layout/suggestions_strip_settings_key" />
android:id="@+id/suggestions_strip_right_key" <include
layout="@layout/suggestions_strip_right_key" /> android:id="@+id/suggestions_strip_left_key"
<include layout="@layout/suggestions_strip_left_key" />
android:id="@+id/suggestions_strip_up_key" <include
layout="@layout/suggestions_strip_up_key" /> android:id="@+id/suggestions_strip_right_key"
<include layout="@layout/suggestions_strip_right_key" />
android:id="@+id/suggestions_strip_down_key" <include
layout="@layout/suggestions_strip_down_key" /> android:id="@+id/suggestions_strip_up_key"
</LinearLayout> layout="@layout/suggestions_strip_up_key" />
<include
android:id="@+id/suggestions_strip_down_key"
layout="@layout/suggestions_strip_down_key" />
</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