Toolbar 上滑隐藏,下滑显示

今天加班

下班时,检查任务,有一个小BUG,本以为是比较简单的,改一会就好了,没想到这一改到了现在。

主要功能就是使顶部标题栏在用户向上滑动界面时隐藏,向下滑动时再显示出来,感觉挺简单的,第一次做的时候是同事写的,底下是一个ScrollView,直接用ScrollView的setOnTouchListener方法做监听,当滑动的时候做逻辑,但是在测试的时候发现有时候会有错误,经常滑着滑着就没了....

然后开始改

上网搜到CoordinatorLayout这个布局,可以做很多滑动操作。

发现很强大。

开始上手。

然后就出现了问题,发现好像和RecycleView、GridView与ListView都可以,但是和ScrollView一起时就没有了作用。

当时由于已经下班一段时间了,没有继续在这个方向深挖,而是去尝试了其他的思路。

无果。

从公司出来吃饭回家,再次尝试。

此时开始继续研究CoordinatorLayout和ScrollView的问题,直接在StackOverflow上找到了答案。

CoordinatorLayout下使用ScrollView时,必须使用NestedScrollView才可以达到需求的效果

然后就开始改啊改啊...

又遇到了其他的问题,下来的知识点就是:

windowActionBar:在自定义的Theme中设置成false,就没有系统默认的菜单选项了。

windowNotTitle: 设置这个属性为true则不显示标题了

colorPrimary:这个属性是你的actiinbar的属性颜色colorPrimaryDark:这个属性则是你的标题栏的颜色,你可以设置和你自定义的标题栏一个颜色

android:windowTranslucentStatus 将界面拉升到顶部状态栏,并且定义顶部状态栏透明,这样你的页面就是一整张了,没有上面电池背景条之类的了,整个页面看上去会好很多 

android:windowTranslucentNavigation 设置你的虚拟键透明,这个虚拟键就是返回和菜单键等 设置这个为true后会出现问题,底部如果是按键就会与手机底部虚拟按键重合,解决方法如下:

先判断一下你的手机是否含有NavigationBar这个东西,就是虚拟键,判断代码如下

public static boolean isHaveNavigationBar (Context context) {

boolean isHave = false;

Resources rs = context.getResources();

int id = rs.getIdentifier("config_showNavigationBar","bool","android");

if (id > 0) {

hasNavigationBar = rs.getBoolean(id);

}

try{

Classsystem PropertiesClass=Class.forName("android.os.SystemProperties");

Methodm=systemPropertiesClass.getMethod("get",String.class);

String navBarOverride=(String)m.invoke(systemPropertiesClass,"qemu.hw.mainkeys");

if("1".equals(navBarOverride)) {

isHave=false;

}else if("0".equals(navBarOverride)) {

isHave=true;

}

}catch(Exceptione) {

Log.w("TAG",e);

}

return isHave;

}

返回为true的话就不给他设置,反之设置,具体代码如下:

public static void transportStatus (Activity context){

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

if(!isHaveNavigationBar(context))

context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

}

}

这样就可以达到想要的效果了.


CoderTung的第9篇知识储备。

推荐阅读更多精彩内容