精华内容
下载资源
问答
  • WebView滑动隐藏toolbar

    2017-08-14 13:25:02
    利用官方控件实现WebView滑动隐藏toolbar,有很多坑,比如AppBarLayout里面不能嵌套CollapsingToolbarLayout,具体各种控件的使用,等熟悉再说。先把这个保存下来。
    <?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:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="@color/white">
       <android.support.v4.widget.NestedScrollView
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:layout_behavior="@string/appbar_scrolling_view_behavior"
          android:fitsSystemWindows="true">
       <WebView
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/webiew"
          android:focusable="true"
          android:focusableInTouchMode="true"
    />
       </android.support.v4.widget.NestedScrollView>
       <android.support.design.widget.AppBarLayout
          android:layout_width="match_parent"
          android:layout_height="42dp"
          android:fitsSystemWindows="true"
          android:background="@color/white">
          <android.support.v7.widget.Toolbar
             android:id="@+id/web3_toolbar"
             android:layout_height="42dp"
             android:layout_width="match_parent"
             android:background="#00000000"
             app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
             app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
             app:layout_scrollFlags="scroll|enterAlways"/>
       </android.support.design.widget.AppBarLayout>
       <ProgressBar
          style="?android:attr/progressBarStyleHorizontal"
          android:id="@+id/myProgressBar"
          android:layout_width="match_parent"
          android:layout_height="2dip"
          android:progressDrawable="@drawable/layer"
          />
    </android.support.design.widget.CoordinatorLayout>
    
    
    展开全文
  • Android WebView滑动隐藏Toolbar

    千次阅读 2017-10-12 16:35:34
    1. 前言在我们浏览一个滑动视图列表的时候会动态的将ActionBar(Toolbar)隐藏(向下滑动显示,向上滑动隐藏),以留下更多的空间来显示内容。内容非常简单,先看看效果图

    1. 前言

    在我们浏览一个滑动视图列表的时候会动态的将ActionBar(Toolbar)隐藏(向下滑动显示,向上滑动隐藏),以留下更多的空间来显示内容。内容非常简单,先看看效果图:
    效果图

    2. 布局文件

    <?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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:titleTextColor="@color/white"/>
    
            <ProgressBar
                android:id="@+id/progress_bar"
                style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
                android:layout_width="match_parent"
                android:layout_height="2dp"
                android:layout_gravity="center"/>
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <WebView
                android:id="@+id/web_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>
        </android.support.v4.widget.NestedScrollView>
    
    </android.support.design.widget.CoordinatorLayout>
    • Toolbar 的 app:layout_scrollFlags=”scroll|enterAlways” 属性。(19行)
    • NestedScrollView 的 app:layout_behavior=”@string/appbar_scrolling_view_behavior” 属性(36行,该值是一个固定值)

    3 关于 Toolbar 的五种ScrollFlags

    分别是:scroll,enterAlways,enterAlwaysCollapsed,snap,exitUntilCollapsed

    3.1 scroll

    The view will be scroll in direct relation to scroll events. This flag
    needs to be set for any of the other flags to take effect. If any
    sibling views before this one do not have this flag, then this value
    has no effect.

    Child View 伴随着滚动事件而滚出或滚进屏幕。注意两点:第一点,如果使用了其他值,必定要使用这个值才能起作用;第二点:如果在这个child View前面的任何其他Child View没有设置这个值,那么这个Child View的设置将失去作用。

    app:layout_scrollFlags="scroll"


    SouthEast
    scroll

    3.2 enterAlways

    When entering (scrolling on screen) the view will scroll on any
    downwards scroll event, regardless of whether the scrolling view is
    also scrolling. This is commonly referred to as the ‘quick return’
    pattern.

    快速返回模式。其实就是向下滚动时Scrolling View和Child View之间的滚动优先级问题。对比scroll和scroll | enterAlways设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动的一方已经全部滚进屏幕之后,另一方才开始滚动。

    app:layout_scrollFlags="scroll|enterAlways"


    SouthEast
    enterAlways

    3.3 enterAlwaysCollapsed

    An additional flag for ‘enterAlways’ which modifies the returning view
    to only initially scroll back to it’s collapsed height. Once the
    scrolling view has reached the end of it’s scroll range, the remainder
    of this view will be scrolled into view. The collapsed height is
    defined by the view’s minimum height.

    enterAlways的附加值。这里涉及到Child View的高度和最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。

    <android.support.v7.widget.Toolbar
    ...
    android:layout_height="150dp"
    android:minHeight="?attr/actionBarSize"
    app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
    ... 
    />


    SouthEast
    enterAlwaysCollapsed

    3.4 exitUntilCollapsed

    When exiting (scrolling off screen) the view will be scrolled until it
    is ‘collapsed’. The collapsed height is defined by the view’s minimum
    height.

    这里也涉及到最小高度。发生向上滚动事件时,Child View向上滚动退出直至最小高度,然后Scrolling View开始滚动。也就是,Child View不会完全退出屏幕。

    <android.support.v7.widget.Toolbar
    ...
    android:layout_height="150dp"
    android:minHeight="?attr/actionBarSize"
    app:layout_scrollFlags="scroll|exitUntilCollapsed"
    ... 
    />


    SouthEast
    exitUntilCollapsed

    3.5 snap

    Upon a scroll ending, if the view is only partially visible then it
    will be snapped and scrolled to it’s closest edge. For example, if the
    view only has it’s bottom 25% displayed, it will be scrolled off
    screen completely. Conversely, if it’s bottom 75% is visible then it
    will be scrolled fully into view.

    简单理解,就是Child View滚动比例的一个吸附效果。也就是说,Child View不会存在局部显示的情况,滚动Child View的部分高度,当我们松开手指时,Child View要么向上全部滚出屏幕,要么向下全部滚进屏幕,有点类似ViewPager的左右滑动。

    <android.support.v7.widget.Toolbar
    ...
    android:layout_height="150dp"
    android:minHeight="?attr/actionBarSize"
    app:layout_scrollFlags="scroll|snap"
    ... 
    />


    SouthEast
    snap

    展开全文
  • 1. 前言在我们浏览一个滑动视图列表的时候会动态的将ActionBar(Toolbar)隐藏(向下滑动显示,向上滑动隐藏),以留下更多的空间来显示内容。内容非常简单,先看看效果图:2. 布局文件xmlns:android=...

    1. 前言

    在我们浏览一个滑动视图列表的时候会动态的将ActionBar(Toolbar)隐藏(向下滑动显示,向上滑动隐藏),以留下更多的空间来显示内容。内容非常简单,先看看效果图:

    FgkDl0_1g5RJRNyh3oJalEBOxM7w

    2. 布局文件

    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:orientation="vertical">

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:orientation="vertical">

    android:id="@+id/toolbar"

    android:layout_width="match_parent"

    android:layout_height="?attr/actionBarSize"

    android:background="@color/colorPrimary"

    app:layout_scrollFlags="scroll|enterAlways"

    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

    app:titleTextColor="@color/white"/>

    android:id="@+id/progress_bar"

    style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"

    android:layout_width="match_parent"

    android:layout_height="2dp"

    android:layout_gravity="center"/>

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    android:id="@+id/web_view"

    android:layout_width="match_parent"

    android:layout_height="match_parent"/>

    Toolbar 的 app:layout_scrollFlags=”scroll|enterAlways” 属性。(19行)

    NestedScrollView 的 app:layout_behavior=”@string/appbar_scrolling_view_behavior” 属性(36行,该值是一个固定值)

    3 关于 Toolbar 的五种ScrollFlags

    分别是:scroll,enterAlways,enterAlwaysCollapsed,snap,exitUntilCollapsed

    3.1 scroll

    The view will be scroll in direct relation to scroll events. This flag

    needs to be set for any of the other flags to take effect. If any

    sibling views before this one do not have this flag, then this value

    has no effect.

    Child View 伴随着滚动事件而滚出或滚进屏幕。注意两点:第一点,如果使用了其他值,必定要使用这个值才能起作用;第二点:如果在这个child View前面的任何其他Child View没有设置这个值,那么这个Child View的设置将失去作用。

    app:layout_scrollFlags="scroll"

    Fmph8WEF_-13zdc6vyn7Msxz4_aS

    scroll

    3.2 enterAlways

    When entering (scrolling on screen) the view will scroll on any

    downwards scroll event, regardless of whether the scrolling view is

    also scrolling. This is commonly referred to as the ‘quick return’

    pattern.

    快速返回模式。其实就是向下滚动时Scrolling View和Child View之间的滚动优先级问题。对比scroll和scroll | enterAlways设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动的一方已经全部滚进屏幕之后,另一方才开始滚动。

    app:layout_scrollFlags="scroll|enterAlways"

    Fmph8WEF_-13zdc6vyn7Msxz4_aS

    enterAlways

    3.3 enterAlwaysCollapsed

    An additional flag for ‘enterAlways’ which modifies the returning view

    to only initially scroll back to it’s collapsed height. Once the

    scrolling view has reached the end of it’s scroll range, the remainder

    of this view will be scrolled into view. The collapsed height is

    defined by the view’s minimum height.

    enterAlways的附加值。这里涉及到Child View的高度和最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。

    ...

    android:layout_height="150dp"

    android:minHeight="?attr/actionBarSize"

    app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"

    ...

    />

    Frkpl24T88WrPdDpAwrejHLNAnLw

    enterAlwaysCollapsed

    3.4 exitUntilCollapsed

    When exiting (scrolling off screen) the view will be scrolled until it

    is ‘collapsed’. The collapsed height is defined by the view’s minimum

    height.

    这里也涉及到最小高度。发生向上滚动事件时,Child View向上滚动退出直至最小高度,然后Scrolling View开始滚动。也就是,Child View不会完全退出屏幕。

    ...

    android:layout_height="150dp"

    android:minHeight="?attr/actionBarSize"

    app:layout_scrollFlags="scroll|exitUntilCollapsed"

    ...

    />

    FqmtmDxaoJxFCFsd6_6bTjoyHcuy

    exitUntilCollapsed

    3.5 snap

    Upon a scroll ending, if the view is only partially visible then it

    will be snapped and scrolled to it’s closest edge. For example, if the

    view only has it’s bottom 25% displayed, it will be scrolled off

    screen completely. Conversely, if it’s bottom 75% is visible then it

    will be scrolled fully into view.

    简单理解,就是Child View滚动比例的一个吸附效果。也就是说,Child View不会存在局部显示的情况,滚动Child View的部分高度,当我们松开手指时,Child View要么向上全部滚出屏幕,要么向下全部滚进屏幕,有点类似ViewPager的左右滑动。

    ...

    android:layout_height="150dp"

    android:minHeight="?attr/actionBarSize"

    app:layout_scrollFlags="scroll|snap"

    ...

    />

    FhhDTVqi5fh9oU0uChwlugxZWqAj

    snap

    展开全文
  • Android 仿QQ浏览器WebView滑动隐藏显示ActionBar效果
  • 仿UC浏览器,上滑隐藏头部,下滑显示头部。 监听WebView滑动事件,让头部自己滑动。
  • 加载出webview滑动时候显示toast,松手后两秒toast隐藏
  • 最近在做一个app时遇到了这样一个问题:我采用了Navigation侧边栏切换Fragment,其中一个Fragment就需要用到WebView,需求是这个Fragment 里面的WebView滑动的时候Toolbar能够自动隐藏,然而弄了很久也没有办法实现...

    最近在做一个app时遇到了这样一个问题:

    我采用了Navigation侧边栏切换Fragment,其中一个Fragment就需要用到WebView,需求是这个Fragment 里面的WebView滑动的时候Toolbar能够自动隐藏,然而弄了很久也没有办法实现。其中有一个办法能够解决单一页面下的WebView滑动时toolbar 自动隐藏,见https://blog.csdn.net/m5314/article/details/68943869。

    他是写了一个继承WebView的控件NestedScrollWebView来实现对CoordinatorLayout+AppBarLayout的支持。不过,由于我的Fragment有很多个,切换Fragment的时候是把欲切换的Fragment应用到id为layout_fragment的一个框架布局上,而只是其中一个需要用到WebView,他这个若是替换掉我的框架布局的话其他几个Fragment都不能显示了。因此不能够使用他写的这个控件来实现对某一个fragment的toolbar隐藏了。

    在网上看了很多资料也没能解决我的问题,网上的toolbar隐藏的例子都是利用recyclerPage或者ListView配合CoordinatorLayout、AppBarLayout来实现滑动时Toolbar的隐藏、显示,这明显不符合我的需求。

    想要的效果是这样的(不知为何不能显示动图?脑补一下随着滑动webview, toolbar会自动隐藏吧.....:


    直接上解决办法:

    创建了一个Demo为例,styles.xml的代码如下(注意是NoActionBar):

    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
    </resources>
    

    main_activity.xml的代码如下:

    <?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/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:orientation="vertical">
    
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary">
    
            <TextView
                android:text="假装我是toolbar"
                android:textColor="#ffffff"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:gravity="center_vertical"
                android:paddingStart="10dp"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways|snap" />
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
            <!-- 这个FrameLayout就是提供给你的那些Fragment显示内容的布局 -->
            <FrameLayout
                android:id="@+id/your_fragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
                <!-- 这里的WebView就是其中一个Fragment的布局文件中的内容,为了展示就简单点写,fragment的主要内容直接放到这里了 -->
                <WebView
                    android:id="@+id/web_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
            </FrameLayout>
    
        </android.support.v4.widget.NestedScrollView>
    
    </android.support.design.widget.CoordinatorLayout>

    MainActivity.java的代码如下:

    package com.example.asus.demo;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            WebView webView = (WebView) findViewById(R.id.web_view);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.setWebViewClient(new WebViewClient());
            webView.loadUrl("http://www.baidu.com");
        }
    }
    

    展开全文
  • 日常开发中很少会碰到ScrollView中嵌套listview或webview的情况,而且谷歌官方也不推荐这么做,但是也不是一定不会有这样的需求,毕竟定需求的不是我们程序员,而是产品经理。比如像下面这种需求:  ...
  • 参考网址:... ... import android.content.Context; import android.util.AttributeSet; import android.webkit.WebView; public class ImageWebView extends WebView { public ImageWebView(Context c
  • 监听webview滑动

    千次阅读 2015-12-01 19:09:26
    在如今html5越来越横行的年代,app里面webview的交互显得越发重要起来。。。 有时候你会碰到内置控件与webview共存在一个页面的情况。如下图: ...这个时候令人蛋疼的事儿就来啦。...然后webview自主滑动。。这才是
  • 这个项目我已经发布在GitHub上面,地址为:https://github.com/zhangyanru/WebViewDemo 安卓webView介绍 webView的基本使用方法 webView一些常见的问题和解决方法 自己封装一个webView 项目源码地址
  • webview界面的滑动监听

    千次阅读 2017-12-05 16:57:40
    这项目中有这样一个功能要求: 首页上要有一个标题,如图上面要实现一些功能扫描登录的功能,下面整个是webview界面,要求在向下滑动的时候标题消失,滑动到顶端的时候把标题显示出来。  要完成以上功能,就要...
  • webview.setVerticalScrollBarEnabled(false); //去除上下滑动 webview.setHorizontalScrollBarEnabled(false);//去除左右滑动 chat_webView.setInitialScale(100); //这个一般用来设置缩放倍率
  • 一:自定义WebView,添加回调的监听器package app.coolwhether.com.zhihudailynews.support;import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view....
  • 安卓recyclerview嵌套webview造成的滑动冲突 最近在做一个智能客服的项目,整个聊天内容是一个recyclerview,里面每一条信息都是一个item,不同类型的回复对应不同的viewholder,其中有一个item的布局中有一个...
  • 滚动条不显示: webView....//垂直不显示隐藏缩放按钮:settings.setDisplayZoomControls(false);适应手机的分辨率://这方法可以让你的页面适应手机屏幕的分辨率,完整的显示在屏幕上,可
  • webview隐藏滚动条

    千次阅读 2015-10-31 14:04:19
    webView.setHorizontalScrollBarEnabled(false);//水平不显示 webView.setVerticalScrollBarEnabled(false); //垂直不显示 webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);//滚动条在WebView内侧...
  • WebView和AppBarLayout嵌套滑动无效分析及解决办法 目录 WebView和AppBarLayout嵌套滑动无效分析及解决办法 目录 序章 引题 Materials Design中AppBarLayout嵌套滑动的基本实现. 问题 分析 解决 嵌套滑动...
  • 1.在webview的父布局中设置android:focusable="true" android:focusableInTouchMode="true"属性。 2.监听webview的ontouch事件: web.setOnTouchListener(new OnTouchListener() { @Override public ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,132
精华内容 1,652
关键字:

webview滑动隐藏