状态栏下出现白条
wangxiaguang102 opened this issue · comments
您好!
#华为p7手机,系统为5.11,状态栏颜色可以调整,
但是紧挨着状态栏的位置出现一条白色长条(高度等于状态栏高度)
请附图
您好,github一直上传不成功,是否方便发你邮箱
可以
应该没有5.11这个版本,你系统版本是不是打错了
是5.1.1版本,bug的截图已经发至邮箱
@wangxiaguang102 请问您发的是哪个邮箱?我好像没在我的邮箱中看到。
请问这个问题解决了吗?我也出现这问题了 三星的手机
@chen-krolser 请附图
不是机型的问题 我另外开个工程 就不会出现白条 可能是Android 版本限制了
@wangxiaguang102 @chen-krolser 使用项目里的demo是否有同样的问题?
项目里的demo导入提示找不到指定文件
找不到哪个指定文件?
library\build.gradle这个
@chen-krolser 怎么会呢?这个文件就在里面啊,没理由找不到这个文件的。你是不是看错日志所表达的意思了?
@chen-krolser 能把日志post上来吗?
是versionCode识别不出来 手动直接改下就好了 demo里面没问题
demo运行起来没问题?有出现白条吗?另外请问你的系统android版本号也是5.1.1吗?
没出现白条 demo是继承AppCompatActivity 我项目是自定义的actionbar类继承FragmentActivity
按理来说AppCompatActivity也是继承的FragmentActivity 但是不知为什么我的会出现白条
那请你检查以下几个地方:
- 对应的Activity的Theme(如果没有,则是application的theme配置)
- Activity里的根布局用的是哪一个?
- 是否有用到
Window.ID_ANDROID_CONTENT
或android.id.R.content
- StatusBarCompat的调用的位置
theme是Theme.AppCompat.Light.NoActionBar,activity布局也没有引用其他theme,content都没用到,StatusBarCompat调用位置也是在申明布局之后
@chen-krolser 请问你使用的根布局是哪一个?
或者能不能写一个小的demo复现一下该问题,传到github上来?
@chen-krolser 请问你是之前为透明状态栏,然后再设置颜色的吗?
@wangxiaguang102 @chen-krolser 我自己复现出了一个同样的情况。查了一下,使用了AppCompat的主题,在android.R.id.content的ViewGroup上面还会有一层ActionBarOverlayLayout。布局结构大致如下:
DecorView
--LinearLayout (fitsSystemWindows为true)
----ViewStub
----FrameLayout
------ActionBarOverlayLayout (fitsSystemWindows 为true)
--------ContentFrameLayout(id为android.R.id.content)
----------你的布局
--------ActionBarContainer
----------Toolbar
如果状态栏透明,DecorView下的LinearLayout会设置一个大小为状态栏高度的paddingTop
当修改了状态栏使它不透明之后,LinearyLayout的padding置为0,但是ActionBarContainer多了一个与状态栏高度同样大小的marginTop。把它的marginTop设为0之后恢复正常。
@wangxiaguang102 @chen-krolser 请尝试以下代码能否解决问题?
View view = findViewById(android.support.v7.appcompat.R.id.action_bar_container);
if (view != null) {
ViewGroup.LayoutParams params = view.getLayoutParams();
if (params instanceof ViewGroup.MarginLayoutParams) {
((ViewGroup.MarginLayoutParams)params).topMargin = 0;
view.setLayoutParams(params);
}
}
如果可以请告知,我将更新版本。
已更新0.6版本,请尝试调用
StatusBarCompat.resetActionBarContainerTopMargin(getWindow());
如果不行,请尝试调用
StatusBarCompat.resetActionBarContainerTopMargin(getWindow(), android.support.v7.appcompat.R.id.action_bar_container);