是否可以强制应用程序始终显示在Android应用程序中的导航栏?在三星Galaxy S8上,用户可以在"运行时"隐藏导航栏 - 这会在应用程序中导致一些意外行为(如果您感兴趣;我尝试在视图上添加setOnSystemUiVisibilityChangeListener并重绘,invalidate,requestLayout和forceLayout没有运气.重新启动活动不适用,因为该应用程序是单活动应用程序.我也查看了WindowInsets并且没有运气.).
因此,我只是想通过不允许用户删除导航栏来避免此问题.我在网上找到的所有资源都是为了隐藏导航栏.有人如何建议如何留下来?
不知何故,应用程序" Navbar Apps "允许自定义导航栏的背景,即使它不在前景中,甚至不仅仅是简单的颜色.
我认为只有当应用程序位于前台时才能改变它的颜色......
我在一些自定义的roms上看到它,甚至在播放音乐时都有特效,但我不知道即使没有自定义ROM(或root)也可以自定义它.
这是一个黑客?它们如何改变,而不仅仅是导航栏的颜色,甚至为它设置背景图像(包括动态的电池状态)?
是否也可以更改其他系统栏,例如通知栏?
它如何检查哪个应用程序位于前台(可能需要根据当前应用程序决定何时更改颜色)?它是一个新的API吗?我认为用于获取前台活动的API已被弃用,现在无论如何都没有帮助......
在某些设备上,如三星S8,导航栏可以隐藏或显示,这在某些情况下是一个问题. 三星S8的导航栏可以通过单击左下方按钮隐藏或显示
我没有找到直接的方法来确定即使在Android源代码中.
我谷歌一些问题,如检查导航栏的好方法 ,但它没有帮助.
非常感谢任何帮助.
我曾经SystemChrome.setEnabledSystemUIOverlays([]);让我的 Flutter 应用程序全屏显示。
状态栏永远消失了,但我在导航栏曾经所在的底部得到了这个空白区域。
android-fullscreen flutter android-navigation-bar flutter-layout
基于以下代码片段,我想知道如何隐藏软键(状态栏和导航栏)并在整个应用程序会话中保持沉浸模式,即使显示 AlertDialog 也是如此:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
AlertDialog.Builder dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialog = new AlertDialog.Builder(this);
findViewById(R.id.button).setOnClickListener(this);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button:
dialog.setTitle("Title");
dialog.setMessage("Message");
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// Dismisses dialog.
}
}).create().show(); …Run Code Online (Sandbox Code Playgroud) android focus android-alertdialog android-statusbar android-navigation-bar
因为getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);在 Android API 30 中不起作用。我尝试了本教程中的另一个代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
}
Run Code Online (Sandbox Code Playgroud)
但导航栏不是完全透明的(img),就像在谷歌应用程序中一样。如何实现完全透明的导航栏?
这是我现在底部导航栏的样子:
看起来很棒吧?除此之外,现在您可以清楚地(或大部分情况下)看到每个图标,但是当您在我的设备上查看它时,您几乎看不到这些图标。
我目前有以下内容themes.xml:
...
<!-- Navigation bar colour. -->
<item name="android:navigationBarColor">@color/pink</item>
<item name="android:windowLightNavigationBar">false</item><!-- This does nothing -->
...
Run Code Online (Sandbox Code Playgroud)
目前我minSdkVersion29岁,我targetSdkVersion30岁。
我怎么能改变图标的颜色,或者如果不可能,至少让它们颜色更深,这样它们就可以看到了?
我的问题是,当我尝试使用底部导航更改片段时,它会起作用,但在一种情况下除外。我有 5 个片段,当我进入第 3 个片段并进入第 5 个片段后,第 5 个片段的图标 don\xc2\xb4t 改变了它的颜色。之后,当我进行另一次导航时,应用程序崩溃并给出下一个错误:
\njava.lang.IndexOutOfBoundsException: fromIndex = -1\n at java.util.ArrayList.subListRangeCheck(ArrayList.java:1014)\n at java.util.ArrayList.subList(ArrayList.java:1008)\n at androidx.navigation.fragment.FragmentNavigator.popBackStack(FragmentNavigator.kt:80)\n at androidx.navigation.NavController.popBackStackInternal(NavController.kt:275)\n at androidx.navigation.NavController.popBackStackInternal(NavController.kt:558)\n at androidx.navigation.NavController.navigate(NavController.kt:1682)\n at androidx.navigation.NavController.navigate(NavController.kt:1541)\n at androidx.navigation.NavController.navigate(NavController.kt:1468)\n at androidx.navigation.ui.NavigationUI.onNavDestinationSelected(NavigationUI.kt:92)\n at androidx.navigation.ui.NavigationUI.setupWithNavController$lambda-6(NavigationUI.kt:602)\n at androidx.navigation.ui.NavigationUI.$r8$lambda$6wzEv9QqEZKdQFS1sQQy-bdQvgE(Unknown Source:0)\n at androidx.navigation.ui.NavigationUI$$ExternalSyntheticLambda2.onNavigationItemSelected(Unknown Source:2)\n at com.google.android.material.navigation.NavigationBarView$1.onMenuItemSelected(NavigationBarView.java:295)\n at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:834)\n at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)\n at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:985)\n at com.google.android.material.navigation.NavigationBarMenuView$1.onClick(NavigationBarMenuView.java:133)\n at android.view.View.performClick(View.java:7520)\n at android.view.View.performClickInternal(View.java:7489)\n at android.view.View.access$3600(View.java:826)\n at android.view.View$PerformClick.run(View.java:28555)\n at android.os.Handler.handleCallback(Handler.java:938)\n at android.os.Handler.dispatchMessage(Handler.java:99)\n at android.os.Looper.loop(Looper.java:233)\n at android.app.ActivityThread.main(ActivityThread.java:8010)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)\nRun Code Online (Sandbox Code Playgroud)\n但是,如果之前我单击了第 5 个片段并转到第 3 …
android android-navigation android-navigationview android-navigation-bar android-navigation-graph
我正在尝试实现一个全屏应用程序,其中用户无法访问状态栏和导航栏。
最好我希望它们被完全删除,但从我读到的情况来看,这是不可能的,除非你root设备
所以我的问题基本上是:当我显示弹出菜单时,如何隐藏导航栏图标?
到目前为止,我已经尝试过:
hideNavigation()显示弹出菜单之前和之后调用hideNavigation()onCreate(), onResume() & onWindowFocusChanged()hideNavigation()结合使用(Handler失败的尝试,可能是我没做对)
class PinCodeActivity, HasTitleBar {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pin_code)
initTitleBarWith(this)
hideNavigation()
}
override fun onResume() {
super.onResume()
hideNavigation()
}
fun hideNavigation() {
window.decorView.apply {
systemUiVisibility = FLAGS
}
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
hideNavigation()
}
}
const val FLAGS = (View.SYSTEM_UI_FLAG_LOW_PROFILE or …Run Code Online (Sandbox Code Playgroud) android android-fullscreen android-immersive android-navigation-bar
我通过添加以下属性来使用半透明导航栏,使我的应用程序移动导航菜单看起来像一些 Google 应用程序,其中移动导航栏有点透明,内容将通过它可见。
<item name="android:windowTranslucentNavigation">true</item>
Run Code Online (Sandbox Code Playgroud)
我不希望我的观点受到影响。我只需要在有更多内容在屏幕上滚动时才需要它,比如有滚动活动或在 recyclerview 中。但最后我需要我的活动视图不与它重叠。
有什么建议请...