скрытие и отображение макета во фрагменте вызывает мерцание GridView - PullRequest
0 голосов
/ 06 октября 2018

В своем фрагменте я использую сворачивающуюся панель инструментов с ViewPager и окном поиска в ней. Ниже ViewPager есть GridView.Когда пользователь прокручивает страницу вниз, панель инструментов, содержащая ViewPager и окно поиска, сворачивается.Мои проблемы возникают в связи с тем, что, когда он падает, я хочу показать окно поиска под свернутой панелью инструментов.Поэтому я создал дополнительный макет, содержащий другое поле поиска под сворачивающейся панелью инструментов.Я сделал дополнительную разметку видимой и скрытой в отношении свертывания и расширения панели инструментов. Моя проблема заключается в том, что когда я делаю видимость дополнительной разметки, GridView ниже этого мерцания, что вызывает у пользователя неприятные ощущения.Я хочу плавного перехода без мерцания GridView.

Я сделал следующее:

xml файл:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:orientation="vertical"
    android:layout_marginBottom="10dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        
            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsing_toolbar"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:fitsSystemWindows="true"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">
                
                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="200dp">
                    
                    <android.support.v4.view.ViewPager
                        android:id="@+id/view_pager"
                        android:layout_width="match_parent"
                        android:layout_height="200dp"
                        android:layout_gravity="top"
                        android:scaleType="centerCrop"
                        android:background="@drawable/loading_image"
                        android:fitsSystemWindows="true"
                        app:layout_collapseMode="pin" />
                    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/user"
                        android:text=""
                        android:gravity="center"
                        android:layout_centerInParent="true"
                        android:textSize="16sp"
                        android:textColor="#ff0000"/>
                    
                    <RelativeLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:background="@android:color/transparent"
                        android:layout_below="@+id/user"
                        android:layout_marginLeft="15dp"
                        android:layout_marginRight="15dp">
                        
                        <EditText
                            android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:hint="Search here"
                            android:padding="10dp"
                            android:id="@+id/srch"
                            android:textColor="#000"
                            android:maxLines="1"
                            android:background="@drawable/search_border_grey"/>
                        
                        <ImageButton
                            android:id="@+id/button1"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentRight="true"
                            android:src="@drawable/search_24"
                            android:layout_centerVertical="true"
                            android:background="#fff"
                            android:layout_margin="5dp"
                            android:text="Button"/>
                    </RelativeLayout>
                    <LinearLayout
                        android:id="@+id/layoutDots"
                        android:layout_width="match_parent"
                        android:layout_height="30dp"
                        android:layout_alignParentBottom="true"
                        android:layout_marginBottom="10dp"
                        android:layout_marginTop="5dp"
                        android:gravity="center"
                        android:orientation="horizontal"></LinearLayout>
                </RelativeLayout>
            </android.support.design.widget.CollapsingToolbarLayout>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_gravity="center"
                android:gravity="center"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorPrimaryDark"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                <RelativeLayout
                    android:id="@+id/rl_srch2"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="?attr/actionBarSize"
                    android:background="@android:color/transparent"
                    android:layout_marginLeft="15dp"
                    android:gravity="center"
                    android:layout_marginBottom="5dp"
                    android:layout_marginRight="15dp">

                    <EditText
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:hint="Search here"
                        android:padding="10dp"
                        android:id="@+id/srch2"
                        android:maxLines="1"
                        android:textColor="#000"
                        android:background="@drawable/search_border_grey"/>

                    <ImageButton
                        android:id="@+id/button2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:src="@drawable/search_24"
                        android:layout_centerVertical="true"
                        android:background="#fff"
                        android:layout_margin="5dp"
                        android:text="Button"/>

                </RelativeLayout>
            </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:id="@+id/root_layout"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <GridView
            android:id="@+id/customgrid"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:paddingBottom="20dp"
            android:gravity="center"
            android:horizontalSpacing="10dp"
            android:numColumns="2"
            android:verticalSpacing="3dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

В моем фрагменте я использую следующий код для скрытия и отображения макета

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
        boolean isShow = true;
        int scrollRange = -1;

    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {

                if (Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()) {
                // Collapsed
                    if(is_visible_toolbar == false) {
                    toolbar.setVisibility(View.VISIBLE);
                    is_visible_toolbar = true;
                    toolbar.startAnimation(fadeIn);
                }
                } else if (verticalOffset == 0) {
                // Expanded
                    toolbar.startAnimation(fadeOut);
                    toolbar.setVisibility(View.GONE);
                    is_visible_toolbar = false;
                } else {
                // Somewhere in between
                    toolbar.setVisibility(View.GONE);
                    is_visible_toolbar = false;
                }
                if (scrollRange == -1) {
                    scrollRange = appBarLayout.getTotalScrollRange();
                }
                if (scrollRange + verticalOffset == 0) {
                    collapsingToolbar.setTitle("");
                    isShow = true;
                } else if (isShow) {
                    collapsingToolbar.setTitle(" ");
                    isShow = false;
                }
    }
});

Это макет, есть 2 поля поиска.сначала на сворачивающейся панели инструментов, а затем между сворачивающейся панелью инструментов и gridView.

aa

Как можно избежать мерцания GridView или есть ли лучший подход для моеготребование?Все ваши ответы приветствуются.

...