Mil*_*ilo 26 android view android-layout android-4.4-kitkat
我正在尝试新的Android 4.4半透明导航栏,并希望使用FLAG_TRANSLUCENT_NAVIGATION
标志将导航栏设置为半透明.我只希望导航栏(背面,主页按钮等)是半透明的 - 我希望屏幕顶部的状态栏显示为正常而不是半透明.
我用来实现这个目的的代码是:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是Android现在认为Activity是全屏的并且将布局放在导航栏后面(这是正确的),不幸的是它也将布局放在状态栏后面(一个问题).
一个hacky修复此问题的方法是将填充应用于布局父视图的顶部,但是我需要确定状态栏的高度来执行此操作.
任何人都可以建议我如何获得状态栏高度,它不像我想象的那样微不足道,或者建议一个正确的解决方案.
谢谢
use*_*882 56
public int getStatusBarHeight() {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
在onCreate方法中使用上面的代码.把它放在contextWrapper类中. http://mrtn.me/blog/2012/03/17/get-the-height-of-the-status-bar-in-android/
Jac*_*cki 23
由于api 21有官方方法,当半透明时检索状态栏和导航栏高度的插图
ViewCompat.setOnApplyWindowInsetsListener(view, new OnApplyWindowInsetsListener() {
@Override
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
final int statusBar = insets.getSystemWindowInsetTop();
final int navigationBar = insets.getSystemWindowInsetBottom();
return insets;
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28389 次 |
最近记录: |