Как подтолкнуть взгляд вне активности на Android? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть RelativeLayout, который содержит 2 просмотра, LinearLayout и RecyclerView.Вот как выглядит мой .XML файл:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linear_layout"
        android:orientation="horizontal">

        //A few image views
    </LinearLayout>

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/recycler_view"
        android:layout_below="@+id/linear_layout"/>
</RelativeLayout>

Что я хочу достичь, так это вывести LinearLayout из своей активности, когда я прокручиваю RecyclerView, и для этого яиспользуя следующий код:

RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
    private int scrollDistance = 0;
    private boolean isVisible = true;
    private static final float MINIMUM = 50;

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

        if (isVisible && scrollDistance > MINIMUM) {
            linearLayout.animate().translationY(-linearLayout.getHeight() - 12); //Hide
            scrollDistance = 0;
            isVisible = false;
        } else if (!isVisible && scrollDistance < -MINIMUM) {
            linearLayout.animate().translationY(0); //Show
            scrollDistance = 0;
            isVisible = true;
        }

        if ((isVisible && dy > 0) || (!isVisible && dy < 0)) {
            scrollDistance += dy;
        }
    }
};
recyclerView.addOnScrollListener(onScrollListener);

Но мне удалось получить только содержимое LinearLayout.Я также попытался добавить слушателя, чтобы установить видимость объекта linearLayout на GONE, когда анимация остановится, но RecyclerView попадет в LinearLayout место.

Как я могу получить это LinearLayout плавно выходит из экрана?

1 Ответ

0 голосов
/ 22 мая 2018

Есть два способа достижения.

  1. Выдвинуть Linearlayout внутри CollapsabletoolbarLayout https://www.journaldev.com/13927/android-collapsingtoolbarlayout-example

  2. Использовать свойство viewtype внутри RecyclerAdapter и преобразовать LinearLayout в HEADER ofвид переработчика.https://inducesmile.com/android/add-header-to-android-recyclerview/

Вы можете найти образцы для выше.

...