一次单击即可隐藏AppBarLayout和BottomNavigationView

时间:2018-12-25 19:05:09

标签: android android-appbarlayout bottomnavigationview

对不起,英语不好

我有AppBarLayout,Webview和BottomNavigationView。

我想通过单击显示/隐藏AppBarLayout和BottomNavigationView。

char s[10] = ""; /* initialize all array elements  with 0 */

我的自定义BottomNavigationBehavior,但逻辑不好

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
  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="match_parent"
  >

  <com.google.android.material.appbar.AppBarLayout
    android:id="@+id/appbar_chT"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <androidx.appcompat.widget.Toolbar
      android:id="@+id/toolbar_chT"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      app:layout_scrollFlags="scroll|enterAlways"
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
      app:title=""/>

  </com.google.android.material.appbar.AppBarLayout>


  <WebView
    android:id="@+id/textWebview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:hardwareAccelerated="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    />


  <com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/button_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="@color/webViewBackground"
    app:layout_behavior="BottomNavigationBehavior"
    app:menu="@menu/chapter_bottom"/>

  <ProgressBar
    android:id="@+id/webViewProgressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

对于webview,我有下一个代码

class BottomNavigationBehavior<V : View>(context: Context, attrs: AttributeSet) :
        CoordinatorLayout.Behavior<V>(context, attrs) {

    override fun layoutDependsOn(parent: CoordinatorLayout, child: V, dependency: View): Boolean {
        if (dependency is Snackbar.SnackbarLayout) {
            updateSnackbar(child, dependency)
        }
        if (dependency is WebView) {
            updateWebView(child, dependency)
        }
        return super.layoutDependsOn(parent, child, dependency)
    }


    private fun updateSnackbar(child: View, snackbarLayout: Snackbar.SnackbarLayout) {
        if (snackbarLayout.layoutParams is CoordinatorLayout.LayoutParams) {
            val params = snackbarLayout.layoutParams as CoordinatorLayout.LayoutParams

            params.anchorId = child.id
            params.anchorGravity = Gravity.TOP
            params.gravity = Gravity.TOP
            snackbarLayout.layoutParams = params
        }
    }

    private fun updateWebView(child: View, webview: WebView) {

    }

}

所以,一切正常,但是我的问题是我无法在“酒吧展示”模式下在WebView中看到全文

First image Second image

如上图所示,我看不到19和20字符串,因为它们在底部栏中(我无法再向下滚动webView)

您能给我一些建议吗,或者还有另一种方法来实现这种功能?

谢谢

1 个答案:

答案 0 :(得分:0)

我将根布局更改为ConstraintLayout并使用

 android:animateLayoutChanges="true"

使用

visibility = View.GONE //or  
visibility = View.VISIBLE