【问题标题】:Set windowTranslucentStatus=true when android lollipop or higherandroid lollipop 或更高版本时设置 windowTranslucentStatus=true
【发布时间】:2015-03-19 14:06:59
【问题描述】:

当用户使用棒棒糖及更高版本时,我想将 windowTranslucentStatus 设置为 true,因为否则(至少在 kitkat 上)应用程序栏会出现在系统栏内。在棒棒糖上很好。如果不为每个版本制作单独的styles.xml,显然你不应该再做,我怎么能在java中设置它?

我的 mainActivity 中有以下代码,但不知道 hot windowTranslucentStatus...有什么想法吗?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // set windowTranslucentStatus = true
}

【问题讨论】:

    标签: java android api android-5.0-lollipop


    【解决方案1】:
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window w = getWindow(); // in Activity's onCreate() for instance
            w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    

    【讨论】:

    • 我在 onCreate 方法的顶部使用了它,并且在 setContentView 之后也尝试过,但似乎没有任何区别。系统打印输出确认代码正在运行,但无论有没有代码,它看起来都一样。
    • 我已经编辑了我的答案,我现在检查了它的工作,请检查。
    • 有没有办法以编程方式切换状态栏再次出现
    【解决方案2】:

    您可以随时使用它在半透明或不透明之间切换:

    public static void setTranslucent(Activity activity, boolean translucent){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
      Window w = activity.getWindow();
      if(translucent) {
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      }
      else{
        w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2018-03-24
      相关资源
      最近更新 更多