извините за плохой английский
У меня есть AppBarLayout, Webview и BottomNavigationView.
Я хочу показать / скрыть AppBarLayout и BottomNavigationView одним нажатием.
<?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>
Мой пользовательскийBottomNavigationBehavior, но у него нет хорошей логики
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) {
}
}
Для веб-просмотра у меня есть следующий код
textWebview.setOnTouchListener( object: OnSwipeTouchListener(applicationContext) {
override fun onTap() {
if (appbar_chT != null) {
val fullyExpanded = (appbar_chT!!.height - appbar_chT!!.bottom == 0) && (bottomNavigationView.height == bottomNavigationView.bottom - bottomNavigationView.top)
appbar_chT?.setExpanded(!fullyExpanded)
bottomNavigationView.updateView(fullyExpanded)
}
}
})
private fun BottomNavigationView.updateView(fullyExpanded: Boolean) {
if (fullyExpanded)
this.animate().translationY(this.height.toFloat())
else
this.animate().translationY(0f)
}
Итак, все работает нормально, но моя проблема в том, что я не могу увидеть полный текств WebView в режиме «бары»
Первое изображение Второе изображение
Как видно на изображениях выше, я не вижу 19и 20 строк, потому что они находятся под нижней панелью (я больше не могу прокручивать webView)
Не могли бы вы дать мне несколько советов или, возможно, есть другой способ реализовать такую функциональность?
Спасибо