AriesHoo / FastLib

一个Android项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化。使用说明见wiki
https://github.com/AriesHoo/FastLib/wiki
Apache License 2.0
492 stars 95 forks source link

虚拟导航栏设置按钮颜色 #13

Closed chenchali closed 5 years ago

chenchali commented 6 years ago

集成之后,虚拟导航栏的三个按钮是带边框的透明状态,想设置成黑色的,该怎么修改

AriesHoo commented 6 years ago

参看AppImpl设置导航栏代码 /**

return false则是不处理导航栏。则成了默认的黑色导航栏

chenchali commented 6 years ago

如果改成false导航栏会将项目底部bottomBar覆盖,创建的项目默认导航栏是白底黑色按钮,现在集成你这个依赖后导航栏是activity的背景色,按钮是透明带边框的样式,我是想改成默认创建项目时的白底黑色按钮(小米mix2s,小米6x,小米8,这几个都是这样的问题)

chenchali commented 6 years ago

下载了你的这个项目 ,运行在这几款全面屏手机上时也是同样的问题,导航栏三个按钮都是透明带边框的样式,不知道怎么修改一下

AriesHoo commented 6 years ago

截图给我看看,运行出来啥效果

AriesHoo commented 6 years ago

boolean isInit = mActivityFragmentControl != null ? mActivityFragmentControl.setNavigationBar(activity, navigationViewHelper, bottomView) : true; if (isInit) { activity.getWindow().getDecorView().setTag(R.id.navigation_view_helper, true); navigationViewHelper.init(); }

按道理return true;我的库才会执行操作导航栏相关操作否则是不会操作的

AriesHoo commented 6 years ago

@Override public void setSwipeBack(Activity activity, BGASwipeBackHelper swipeBackHelper) { //以下为默认设置 //需设置activity window背景为透明避免滑动过程中漏出背景也可减少背景层级降低过度绘制 activity.getWindow().setBackgroundDrawableResource(android.R.color.transparent); swipeBackHelper.setSwipeBackEnable(true) .setShadowResId(R.color.colorSwipeBackBackground) //底部导航条是否悬浮在内容上设置过NavigationViewHelper可以不用设置该属性 .setIsNavigationBarOverlap(false); } 通步将setIsNavigationBarOverlap设置成false即可

chenchali commented 6 years ago

image

chenchali commented 6 years ago

image 其他应用都是正常的

AriesHoo commented 6 years ago

@override public void setSwipeBack(Activity activity, BGASwipeBackHelper swipeBackHelper) { //以下为默认设置 //需设置activity window背景为透明避免滑动过程中漏出背景也可减少背景层级降低过度绘制 activity.getWindow().setBackgroundDrawableResource(android.R.color.transparent); swipeBackHelper.setSwipeBackEnable(true) .setShadowResId(R.color.colorSwipeBackBackground) //底部导航条是否悬浮在内容上设置过NavigationViewHelper可以不用设置该属性 .setIsNavigationBarOverlap(false); }

通步将setIsNavigationBarOverlap设置成false;同时设置 @override public boolean setNavigationBar(Activity activity, NavigationViewHelper helper, View bottomView) { //其它默认属性请参考FastLifecycleCallbacks return false; }

chenchali commented 6 years ago

十分感谢

chenchali commented 6 years ago

如果按照你那样设置又会出现另一个问题,就是把导航栏三个按钮隐藏,用全面屏手势操作,导航栏应该隐藏才对

wechatimg46 wechatimg47

chenchali commented 6 years ago

你说的两个地方都设置成true全面屏现不现实三个按钮都没有问题,只是三个按钮是透明带边框的,如果能改一下这个三个按钮的颜色就没有问题了

AriesHoo commented 6 years ago

这个问题后续处理下,猜测是滑动返回库处理问题 setSwipeBackEnable(false) 设置false试一试 activity.getWindow().setBackgroundDrawableResource(android.R.color.transparent); swipeBackHelper.setSwipeBackEnable(false) .setShadowResId(R.color.colorSwipeBackBackground) //底部导航条是否悬浮在内容上设置过NavigationViewHelper可以不用设置该属性 .setIsNavigationBarOverlap(false);

chenchali commented 6 years ago

都试过了,那好的

AriesHoo commented 6 years ago

https://blog.csdn.net/adarcy/article/details/82461633

chenchali commented 6 years ago

这个试了不好用

AriesHoo commented 6 years ago

确实是滑动返回库造成的 https://www.jianshu.com/p/09a3c6098cf5

chenchali commented 6 years ago

这个滑动返回能禁掉吗?按照网上的那个方法写了之后还是有那个问题

AriesHoo commented 6 years ago

public void setSwipeBack(Activity activity, BGASwipeBackHelper swipeBackHelper) { swipeBackHelper.setSwipeBackEnable(false); } 设置成false试一试

AriesHoo commented 6 years ago

如果不可以的话就是使用 implementation 'com.github.AriesHoo:FastLib:2.2.10-beta6_16' 这个版本 新增了一个回调 @Override public boolean isSwipeBackEnable(Activity activity) { return false; } 返回false则不进行滑动返回操作,可参看Demo AppImpl 对应方法