【问题标题】:Fully Transparent Navigation Bar and Status Bar完全透明的导航栏和状态栏
【发布时间】:2021-02-26 05:49:02
【问题描述】:

我想制作一个完全透明的状态栏和导航栏,就像 Google Play 所做的那样。当我使用窗口设置来实现它时,键盘覆盖了EditText。

当此代码使用键盘输入覆盖的 EditText 时:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                      WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

此外,这段代码并没有让它完全透明,它只是让它变得半透明

getWindow().setNavigationBarColor(Color.TRANSPARENT)

或者这个

<item name="android:navigationBarColor">@android:color/transparent</item>

我需要一个这样的窗口:

【问题讨论】:

  • 为什么不让 navigationBarColor 与布局的其余部分相同?例如,&lt;item name="android:navigationBarColor"&gt;@color/colorPrimary&lt;/item&gt; colorPrimary 或与您的主布局匹配的颜色。
  • 我已经试过了,还不够。例如;当我与抽屉布局等其他 UI 组件交互时,导航栏的颜色无法与布局的背景集成。它很有用,但还需要更多。
  • Idk 集成到后台是什么意思。当抽屉打开时,导航栏和状态栏将变暗。我相信这本来就是这样的。

标签: java android xml uinavigationbar android-statusbar


【解决方案1】:

你需要的是这样的:

class Utils {

     static void enableInmersiveMode(Activity act, boolean drawBehindNavBar) {
          View rootView = act.getWindow().getDecorView().getRootView();
          int uiFlags = rootView.getSystemUiVisibility();
          int flags =0;
          if(drawBehindNavBar) { flags = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; }
          flags = flags | uiFlags | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEEN;
          rootView.setSystemUiVisibility(flags);
     }
}

在您的onCreate 活动中:


@Override
void onCreate(Bundle b) {
    Utils.enableInmersiveMode(this, true);
    super.onCreate(b);
    // setContentView and the rest of your code here...
}

请记住,之后的视图将隐藏在系统 UI 后面,您需要为第一个和最后一个 Views 动态添加填充,以便用户可以与它们进行交互。

【讨论】:

  • 不幸的是,它看起来和默认窗口一样。
  • 确保您没有在代码中的任何位置设置颜色。你的应用主题也应该有&lt;item name="android:navigationBarColor"&gt;@android:color/transparent&lt;/item&gt;&lt;item name="android:statusBarColor"&gt;@android:color/transparent&lt;/item&gt;
【解决方案2】:

希望你可以在your-main-path/res/values/styles.xml 试试这个 这适用于任何安卓设备中的透明状态栏导航栏

<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>

如果您想尝试透明度并将其浮动到栏,您可以使用它,但导航栏的背景会降低 50% 的透明度。

<item name="android:windowTranslucentNavigation">true</item>

当你想取消TranslucentNavigation浮动时,这个可以适应状态栏导航栏之间的屏幕

<item name="android:fitsSystemWindows">true</item>

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多