【问题标题】:Apps with Action Bar pre-Android 3.0Android 3.0 之前的带有操作栏的应用程序
【发布时间】:2012-12-24 10:10:05
【问题描述】:

我在仅面向 Android 3.0+ 的应用中使用它。我想吸引更多人,但 ActionBar 不向后兼容。我不想使用像 ActionBarSherlock 这样的第三方库。我沿着那条路走了,这比它更值得。

我有这样的代码:

final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayHomeAsUpEnabled(true);

可以用if - else SDK 检查来包装它吗?在 Action Bar 之外,99% 的其他代码与 pre-3.0 兼容(好吧,我使用的是 Fragments,但使用的是 Support Library。)

【问题讨论】:

  • ActionBarSherlock 值得痛苦
  • 其实这里的问题是:什么痛?您只需从 Github 克隆它,一切都会顺利进行。 :)
  • 我用过它,一旦你可以配置一切,它很漂亮,它绝对简化了生活。 @Ahmad jar 很难配置。好吧,它可能只是 Eclipse...
  • 嗯,我遵循的教程,似乎它正在导入一个完整的“另一个应用程序”来使用它。也许有更好的出路,我不知道?是的,我使用 Eclipse。
  • 天哪,我刚刚使用了 ActionBarSherlock。没有我第一次尝试时记得的那么糟糕。我想我们找到了赢家!

标签: android android-actionbar actionbarsherlock


【解决方案1】:

是的,是这样的:

      @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        private void setupActionBar() {
              if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                 actionBar = getActionBar();
                 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
                 actionBar.setDisplayHomeAsUpEnabled(true); 
                }           
        }

确保你的 actionBar 变量 global

【讨论】:

  • 哎呀,秒杀我。 +1。
  • 我遇到了服务器问题,你也一样吗?
  • 还有一个问题,这是一种普遍接受的方法,还是一种不好的方法?
  • 接受了,自从我从ADT的SettingsActivity模板中看到这个方法以来,我就一直使用它。如果模板使用它,我认为这是安全的方式。
【解决方案2】:

你可以这样做:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

【讨论】:

    【解决方案3】:

    是的。我非常广泛地使用它们。但是请务必观看 Google I/O 2012 上的 this,因为它可以很好地洞察更好的实践。

    您可以使用 Build.VERSION.SDK_INT 以 int 形式获取版本。设置起来很容易:

    final int version = Build.VERSION.SDK_INT;
    ActionBar actionBar;
    
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        private void ABsetup() {
            if (version >= Build.VERSION_CODES.HONEYCOMB) {
                actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    actionBar.setDisplayHomeAsUpEnabled(true);          }
        }
    

    【讨论】:

      【解决方案4】:

      另一种选择是使用 ActionBarSherlock,它使操作栏重新兼容 android 2.1 (SDK 7)。

      链接:http://actionbarsherlock.com/

      【讨论】:

      • I do not want to use a third party library like ActionBarSherlock
      猜你喜欢
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多