Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我想在滚动webview时隐藏操作栏_Android_Android Fragments_Webview - Fatal编程技术网

Android 我想在滚动webview时隐藏操作栏

Android 我想在滚动webview时隐藏操作栏,android,android-fragments,webview,Android,Android Fragments,Webview,基本上,我有BottomNavigationView活动,其中有3个片段(tab1、tab2、tab3)包含3个Web视图,我真正想做的是在向下滚动Web视图时,我的操作栏应该隐藏,比如getSupportActionBar().hide()我知道在堆栈溢出中已经有相同问题的答案,但我不知道在我的情况下该怎么办,因为我是android开发的初学者 这是我的活动\u main.xml <?xml version="1.0" encoding="utf-8"?> <Relative

基本上,我有BottomNavigationView活动,其中有3个片段(tab1、tab2、tab3)包含3个Web视图,我真正想做的是在向下滚动Web视图时,我的操作栏应该隐藏,比如
getSupportActionBar().hide()我知道在堆栈溢出中已经有相同问题的答案,但我不知道在我的情况下该怎么办,因为我是android开发的初学者

这是我的活动\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.hackerinside.jaisonjoseph.polysocial.MainActivity">

<FrameLayout
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@android:color/holo_blue_dark">

    <TextView
        android:id="@+id/message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        />

</FrameLayout>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="?android:attr/windowBackground"
    android:layout_alignParentBottom="true"
    app:menu="@menu/navigation" />

下面是实现的一个示例想法

 boolean isShowing;
//oncraete code is here
WebView mScrollView = (WebView) findViewById(R.id.scrollView);
  mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            float mfloat = mScrollView.getScrollY();
            if (mfloat >= tToolbar.getHeight() && isShowing) {
                toolbarAnimateHide();
            } else if (mfloat == 0 && !isShowing) {
                toolbarAnimateShow(0);
            }
        }
    });

    private void toolbarAnimateShow(final int verticalOffset) {
    isShowing = true;
    //tToolbar is your view(any view)

    // add getSupportActionBar().hide() this code here to hide actionbar
    // remove below code  or comment
    tToolbar.animate()
            .translationY(0)
            .setInterpolator(new LinearInterpolator())
            .setDuration(180)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationStart(Animator animation) {
                    toolbarSetElevation(verticalOffset == 0 ? 0 : TOOLBAR_ELEVATION);
                }
            });

}

private void toolbarAnimateHide() {
    isShowing = false;

    // add getSupportActionBar().show() this code here to showactionbar
    // remove below code or comment

    //tToolbar is your view(any view)
    tToolbar.animate()
            .translationY(-tToolbar.getHeight())
            .setInterpolator(new LinearInterpolator())
            .setDuration(180)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    toolbarSetElevation(0);
                }
            });

}

我没有卷轴view@Jaison_Joseph它的对象名和web视图不是滚动视图。我编辑了我的答案,并添加了注释以便于更好地理解。您的意思是,我可以在我的tab1.java(请参阅我的tab1代码)中使用它。在您的情况下,您编写了一个界面,该界面将通知活动隐藏和显示操作栏。您必须在片段中添加滚动事件,并使用接口将滚动事件通知给活动。下面是一个片段通信的示例。在活动中使用协调器布局\u main.xml之后?@randy
package com.hackerinside.jaisonjoseph.polysocial;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.FrameLayout;
import android.widget.ProgressBar;


  /**
  * A simple {@link Fragment} subclass.


  */

public class tab1 extends Fragment {



 public ProgressBar bar;
 public FrameLayout frameLayout;
public tab1() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


    View rootView = inflater.inflate(R.layout.fragment_tab1, null);



    frameLayout=(FrameLayout) rootView.findViewById(R.id.frame1);
    bar=(ProgressBar)rootView.findViewById(R.id.progressBar1);
    bar.setMax(100);

    final WebView view=(WebView) rootView.findViewById(R.id.webview);
    view.loadUrl("http://facebook.com");
    view.getSettings().setJavaScriptEnabled(true);
    view.setWebViewClient(new MyWebViewClient());
    view.setWebChromeClient(new WebChromeClient(){


        public void onProgressChanged(WebView view1,int progress){

            frameLayout.setVisibility(View.VISIBLE);
            bar.setProgress(progress);
            if (progress==100){

 frameLayout.setVisibility(View.GONE);

            }

 super.onProgressChanged(view1,progress);
        }
    });

    view.getSettings().setBuiltInZoomControls(true);
    view.getSettings().setDisplayZoomControls(false);
    bar.setProgress(0);

    return rootView;
}

}
 boolean isShowing;
//oncraete code is here
WebView mScrollView = (WebView) findViewById(R.id.scrollView);
  mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            float mfloat = mScrollView.getScrollY();
            if (mfloat >= tToolbar.getHeight() && isShowing) {
                toolbarAnimateHide();
            } else if (mfloat == 0 && !isShowing) {
                toolbarAnimateShow(0);
            }
        }
    });

    private void toolbarAnimateShow(final int verticalOffset) {
    isShowing = true;
    //tToolbar is your view(any view)

    // add getSupportActionBar().hide() this code here to hide actionbar
    // remove below code  or comment
    tToolbar.animate()
            .translationY(0)
            .setInterpolator(new LinearInterpolator())
            .setDuration(180)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationStart(Animator animation) {
                    toolbarSetElevation(verticalOffset == 0 ? 0 : TOOLBAR_ELEVATION);
                }
            });

}

private void toolbarAnimateHide() {
    isShowing = false;

    // add getSupportActionBar().show() this code here to showactionbar
    // remove below code or comment

    //tToolbar is your view(any view)
    tToolbar.animate()
            .translationY(-tToolbar.getHeight())
            .setInterpolator(new LinearInterpolator())
            .setDuration(180)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    toolbarSetElevation(0);
                }
            });

}