2016-11-21 3 views
1

У меня есть активность с нижней навигационной панелью (через roughike BottomBar library). Это выглядит так: enter image description hereНижняя панель навигации скрывается при попытке прокрутки

Когда я пытаюсь прокрутить страницу, нижняя панель автоматически скрывается. Итак, я получаю это: enter image description here

Я хочу избежать этого эффекта. Я не хочу скрывать нижнюю панель, когда я просто пытаюсь прокручивать контент, но весь контент находится на экране.

Но если страница содержит контент более чем на одном экране, нижняя панель должна скрываться от прокрутки (и теперь она отлично работает).

Мой код не имеет слушателей для прокрутки и мой файл XML выглядит следующим образом:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context=".presentation.ui.mainactivity.MainActivity" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/mainCord" > 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/sliderContainer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_height="?attr/actionBarSize" 
      android:layout_width="match_parent" 
      android:background="@color/primary" 
      android:theme="@style/ToolbarStyle" 
      app:titleTextAppearance="@style/ToolbarStyle" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:visibility="gone" /> 

    <com.roughike.bottombar.BottomBar 
     android:id="@+id/bottomBar" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:layout_gravity="bottom" 
     app:bb_tabXmlResource="@xml/bottom_bar_tabs" 
     app:bb_activeTabColor="@color/white" 
     app:bb_inActiveTabColor="@color/bottom_bar_inactive_tab" 
     app:bb_inActiveTabAlpha="1" 
     app:bb_behavior="shy|shifting" /> 
</android.support.design.widget.CoordinatorLayout> 

Я искал решение для моей проблемы, но ничего не нашел. Что я могу сделать, чтобы избежать этого эффекта?

ОБНОВЛЕНО:

FAB внутри ViewPager. Макет для вкладки на скриншоте выглядеть следующим образом:

<?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/eventCoordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/refresh" 
     android:visibility="visible" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/eventsRecyclerView" 
      android:scrollbars="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

    </android.support.v4.widget.SwipeRefreshLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity = "center" 
     android:gravity="center" > 

     <TextView 
      android:id="@+id/emptyText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/secondary_text" 
      android:textSize="16sp" 
      android:gravity="center" 
      android:text="@string/empty_events_text" 
      android:drawableTop="@drawable/ic_no_calendar" 
      android:drawablePadding="4dp" 
      android:visibility="gone" /> 

     <TextView 
      android:id="@+id/createEventText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/create_event_text" 
      android:textColor="@color/secondary_text" 
      android:textSize="16sp" 
      android:visibility="gone" /> 

     <TextView 
      android:id="@+id/createEventButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/primary" 
      android:text="@string/create_event" 
      android:textSize="16sp" 
      android:visibility="gone" /> 
    </LinearLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/createEvent" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:src="@drawable/ic_add_white_24dp" 
     style="@style/floating_action_button" 
     app:layout_anchor="@id/eventsRecyclerView" 
     app:layout_anchorGravity="bottom|end" 
     app:borderWidth="0dp" 
     app:elevation="6dp" 
     app:pressedTranslationZ="12dp" /> 

    <RelativeLayout 
     android:id="@+id/loadingPanel" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" > 

     <ProgressBar 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:indeterminate="true" /> 
    </RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 
+0

Эй, я не вижу тебя в своём коде. Это внутри фрагмента viewpager? – Tasneem

+0

@ Да, вы правы. Я добавил макет моего фрагмента к вопросу. –

ответ

2

приложение: bb_behavior = "underNavbar"

У вас есть вопрос в следующем коде

<com.roughike.bottombar.BottomBar 
    android:id="@+id/bottomBar" 
    android:layout_width="match_parent" 
    android:layout_height="60dp" 
    android:layout_gravity="bottom" 
    app:bb_tabXmlResource="@xml/bottom_bar_tabs" 
    app:bb_activeTabColor="@color/white" 
    app:bb_inActiveTabColor="@color/bottom_bar_inactive_tab" 
    app:bb_inActiveTabAlpha="1" 
    app:bb_behavior="shy|shifting" /> 

заменить

app:bb_behavior="shy|shifting" 

с

app:bb_behavior="underNavbar" 

Надеюсь, это сработает для вас!

+0

В этом случае нижняя панель скрывается никогда. Но я хочу скрыть нижнюю панель при прокрутке контента. И не спрячься, когда я просто прокручиваю, но весь контент лежит на экране. –

+0

Пожалуйста, тщательно продумайте свой сценарий ... Это непонятно – Bhavnik

0

Проверьте свой манифест FILE и убедитесь, что вы не используете полноэкранную тему ... Однако вы можете использовать следующий код, чтобы скрыть и показать панель на Android выше, чем API 19. Чтобы скрыть панель, просто измените VISIBLE к GONE, и убедитесь, что вы вызываете метод showNavBar() как в вашем методе onCreate() и onResume()

public void showNavBar() { 
     View view = getWindow().getDecorView(); 
     view.setSystemUiVisibility(View.VISIBLE); 
} 
0

Я была такая же проблема, я установил его, делая это:

в activity_main.XML добавить это к CoordinatorLayout:

android:fitsSystemWindows="true" 

ViewPager должно быть так:

<android.support.v4.view.ViewPager 
    android:background="@color/colorPrimary" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

И во всех ваших Фрагменты, они должны начать с NestedScrollView и должны содержат (fillViewport):

<android.support.v4.widget.NestedScrollView 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:id="@+id/constraintLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" 
    tools:context="com.khan.junaid.phonefans.MainActivity"> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/fans_list_view" 
     /> 

</android.support.v4.widget.NestedScrollView> 

Эти настройки позволят прокручивать фрагменты, и содержимое больше не будет скрываться за кнопками панели навигации.