- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个问题类似于Check if translucent navigation is available但不完全是。我有一个 Nexus 4 闪现了 CyanogenMod 11 或 Android 4.4 等价物,并且任何在横向模式下运行的带有 FLAG_TRANSLUCENT_NAVIGATION 的应用程序都不像纵向模式那样在系统 UI 上具有半透明性。
同样的问题可以在 Nexus 5 上重现,因为我还没有看到任何在横向模式下使用半透明按钮为 Android 4.4 构建的谷歌应用程序。
这是我正在使用的代码
int API_LEVEL = android.os.Build.VERSION.SDK_INT;
if (API_LEVEL >= 19)
{
getWindow().addFlags( WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION );
}
虽然窗口表面变大(并且无法使用),但没有半透明性。
所以问题是,我是否必须做任何额外的事情才能使其在横向模式下工作?或者这是一个 Android 错误?
最佳答案
我不知道他们是否打算改变这种行为,但这似乎是故意的。于是乎<a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_TRANSLUCENT_NAVIGATION" rel="noreferrer noopener nofollow">FLAG_TRANSLUCENT_NAVIGATION</a>
在 Android Kitkat 中引入时,“手机”大小的设备在横向屏幕右侧始终有一个不透明的黑色导航栏。即使在这篇文章发布时,Android Lollipop ( <a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS" rel="noreferrer noopener nofollow">FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS</a>
) 中也有一个新标志,无论传递给 <a href="http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)" rel="noreferrer noopener nofollow">setStatusBarColor()</a>)
什么,它都具有相同的行为。 .
这里有一些粗略的代码,您可以使用它来了解导航栏样式何时不受您的控制。
class MyActivity extends Activity {
// ...
boolean isNavigationForcedBlack() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
return true;
}
final int windowFlags = getWindow().getAttributes().flags;
int navControlFlags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
navControlFlags |= WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
}
if ((windowFlags & navControlFlags) == 0) {
return true;
}
boolean deviceHasOpaqueSideLandscapeNav = getDeviceSmallestWidthDp() < 600;
boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
return deviceHasOpaqueSideLandscapeNav && isLandscape;
}
DisplayMetrics dm = new DisplayMetrics();
float getDeviceSmallestWidthDp() {
getWindowManager().getDefaultDisplay().getRealMetrics(dm);
float widthDp = dm.widthPixels / dm.density;
float heightDp = dm.heightPixels / dm.density;
return Math.min(widthDp, heightDp);
}
}
关于android - FLAG_TRANSLUCENT_NAVIGATION 在横向模式下不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896398/
这个问题类似于Check if translucent navigation is available但不完全是。我有一个 Nexus 4 闪现了 CyanogenMod 11 或 Android 4
我是一名优秀的程序员,十分优秀!