Изменение высоты окна AppBar и плавающего вида поиска прагматично - PullRequest
1 голос
/ 02 мая 2019

Внедрив FloatingSearchView внутри моего AppBarLayout, как в случае с приложением Google Play, я столкнулся с одной проблемой: предложение не отображается должным образом при поиске. Это мой xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbarLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:elevation="0dp" >

    <com.arlib.floatingsearchview.FloatingSearchView
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        app:floatingSearch_close_search_on_keyboard_dismiss="true"
        app:floatingSearch_leftActionMode="showHamburger"
        app:floatingSearch_menu="@menu/main"
        app:floatingSearch_searchBarMarginLeft="5dp"
        app:floatingSearch_searchBarMarginRight="5dp"
        app:floatingSearch_searchBarMarginTop="5dp"
        app:floatingSearch_searchHint="@string/main_title"
        app:floatingSearch_showSearchKey="false"
        app:floatingSearch_suggestionsListAnimDuration="250" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"
        app:tabMode="scrollable"
        app:tabPaddingEnd="16dp"
        app:tabPaddingStart="16dp"
        app:tabTextAppearance="@style/TabLayoutStyle" />

</android.support.design.widget.AppBarLayout>

<com.oyonde.myapp.components.CustomViewPager
    android:id="@+id/mainViewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

в коде Java Я пытался сделать это при поиске

private void searchViewDisplay(boolean isSearching) {        
    FloatingSearchView mSearchView = findViewById(R.id.search_view);
    AppBarLayout appbarLayout = findViewById(R.id.appbarLayout);
    TabLayout tabLayout = findViewById(R.id.tabs);
    ViewPager viewPager = findViewById(R.id.mainViewPager);

    ViewGroup.LayoutParams appbarParams = appbarLayout.getLayoutParams();
    ViewGroup.LayoutParams searchParams = mSearchView.getLayoutParams();

    if (isSearching) {
        tabLayout.setVisibility(View.GONE);
        viewPager.setVisibility(View.GONE);

        AppBarLayout.LayoutParams aprams = new AppBarLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

        appbarParams.height = 500;
        searchParams.height = 500;
    } else {
        tabLayout.setVisibility(View.VISIBLE);
        viewPager.setVisibility(View.VISIBLE);

        appbarParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        searchParams.height = 120;
    }

    appbarLayout.setLayoutParams(appbarParams);
    mSearchView.setLayoutParams(searchParams);
}

Буду признателен за помощь в правильной работе, поскольку я могу скрывать некоторые элементы, такие как viewpager.

До сих пор я пытался использовать мою appbarlayout use match_parent height в xml и режим плавающего поиска одинаковым, и предложения появлялись по желанию, но теперь я хочу прагматично изменить их высоту.

1 Ответ

1 голос
/ 04 мая 2019

Я думаю, что вы пытаетесь прагматично решить свою проблему в своем Java-коде - не лучший способ решения этой проблемы.Попробуйте использовать xml столько, сколько вам нравится.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" >

    <View
        android:id="@+id/header_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimary" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <com.oyonde.myapp.components.CustomViewPager
            android:id="@+id/mainViewPager"
            android:layout_marginTop="105dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="60dp"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:elevation="0dp">

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="0dp"
                app:tabGravity="fill"
                app:tabMode="scrollable"
                app:tabPaddingEnd="16dp"
                app:tabPaddingStart="16dp"
                app:tabTextAppearance="@style/TabLayoutStyle" />

        </android.support.design.widget.AppBarLayout>

        <com.arlib.floatingsearchview.FloatingSearchView
            android:id="@+id/search_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:floatingSearch_close_search_on_keyboard_dismiss="true"
            app:floatingSearch_leftActionMode="showHamburger"
            app:floatingSearch_menu="@menu/main"
            app:floatingSearch_searchBarMarginLeft="5dp"
            app:floatingSearch_searchBarMarginRight="5dp"
            app:floatingSearch_searchBarMarginTop="5dp"
            app:floatingSearch_searchHint="@string/main_title"
            app:floatingSearch_showSearchKey="false"
            app:floatingSearch_suggestionsListAnimDuration="250" />

    </FrameLayout>

</android.support.design.widget.CoordinatorLayout>

Использование FrameLayout должно решить вашу проблему здесь

...