Fix initial scroll position if there's not enough vertical space to hide search bar.
This commit is contained in:
parent
c23215604d
commit
95dba15db8
2 changed files with 46 additions and 15 deletions
|
@ -21,6 +21,8 @@ import org.thoughtcrime.securesms.components.emoji.EmojiPageViewGridAdapter.Vari
|
|||
import org.thoughtcrime.securesms.keyboard.emoji.KeyboardPageSearchView;
|
||||
import org.thoughtcrime.securesms.util.MappingModelList;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class EmojiPageView extends FrameLayout implements VariationSelectorListener {
|
||||
private static final String TAG = Log.tag(EmojiPageView.class);
|
||||
|
||||
|
@ -96,7 +98,29 @@ public class EmojiPageView extends FrameLayout implements VariationSelectorListe
|
|||
|
||||
EmojiPageViewGridAdapter adapter = adapterFactory.create();
|
||||
recyclerView.setAdapter(adapter);
|
||||
adapter.submitList(getMappingModelList(), () -> layoutManager.scrollToPosition(1));
|
||||
adapter.submitList(getMappingModelList(), () -> {
|
||||
layoutManager.scrollToPosition(1);
|
||||
recyclerView.post(() -> {
|
||||
if (!searchEnabled || recyclerView.getAdapter() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
KeyboardPageSearchView searchView = (KeyboardPageSearchView) layoutManager.findViewByPosition(0);
|
||||
if (searchView == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
int allowedScrollDistance = recyclerView.computeVerticalScrollRange() - recyclerView.computeVerticalScrollExtent();
|
||||
if (allowedScrollDistance < searchView.getMeasuredHeight()) {
|
||||
View lastView = Objects.requireNonNull(layoutManager.findViewByPosition(recyclerView.getAdapter().getItemCount() - 1));
|
||||
int scrollDelta = searchView.getMeasuredHeight() - allowedScrollDistance;
|
||||
int distanceFromBottom = Math.max(0, recyclerView.getMeasuredHeight() - lastView.getBottom());
|
||||
lastView.setPadding(lastView.getPaddingLeft(), lastView.getPaddingTop(), lastView.getPaddingRight(), lastView.getPaddingBottom() + scrollDelta + distanceFromBottom);
|
||||
|
||||
recyclerView.post(() -> layoutManager.scrollToPosition(1));
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private @NonNull MappingModelList getMappingModelList() {
|
||||
|
|
|
@ -1,38 +1,45 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp"
|
||||
android:background="?selectableItemBackground">
|
||||
android:background="?selectableItemBackground"
|
||||
android:padding="2dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/emoji_image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:adjustViewBounds="true"
|
||||
android:paddingStart="6dp"
|
||||
android:paddingTop="6dp"
|
||||
android:paddingEnd="6dp"
|
||||
android:paddingStart="6dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="fitCenter" />
|
||||
android:scaleType="fitCenter"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/ic_emoji_smiley_24" />
|
||||
|
||||
<org.thoughtcrime.securesms.components.emoji.AsciiEmojiView
|
||||
android:id="@+id/emoji_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="6dp"
|
||||
android:paddingTop="6dp"
|
||||
android:paddingEnd="6dp"
|
||||
android:paddingStart="6dp"
|
||||
android:visibility="gone"/>
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/emoji_variation_hint"
|
||||
android:layout_width="7dp"
|
||||
android:layout_height="7dp"
|
||||
android:layout_gravity="bottom|right|end"
|
||||
app:srcCompat="@drawable/triangle_bottom_right_corner"
|
||||
android:tint="@color/core_grey_25"/>
|
||||
android:tint="@color/core_grey_25"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/triangle_bottom_right_corner" />
|
||||
|
||||
</FrameLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Add table
Reference in a new issue