【问题标题】:developer.android.com training actionbar - correct result?developer.android.com 培训操作栏 - 结果正确吗?
【发布时间】:2013-09-24 01:20:32
【问题描述】:

我目前正在关注http://developer.android.com/training/index.html 上的教程。 我已经完成了第一部分并继续使用相同代码的第二部分。

在本教程中,目标是制作一个 ActionBar。 我选择使用 v7 appcompat 库来支持 android 2.1 及更高版本。 我认为它已正确安装(并已遵循this 线程)。

我的问题是,我的结果应该是什么样子? 我创建了 2 个 AVD,一个运行 API 18,一个运行 API 8,并且正在我自己的手机上进行测试(Xperia Ray 运行 Cyanogenmod 9,我相信这是 API 15)

所有 3 台设备给出不同的结果。

  • 运行 API 18 的 AVD 会在主要活动和辅助活动中显示带有操作栏的应用程序。在第二个活动中按下操作栏中的徽标会返回到父活动。

  • Xperia Ray 手机 (API 15) 在两个活动中也显示操作栏,但在按下后不会返回父活动。我想我仍然需要对此进行编程并且在 API 15 中不是标准的?

  • 运行 API 8 的 AVD 在主 Activity 中显示一个带有应用名称的操作栏,但在第二个 Activity 中没有显示操作栏

这是我使用的代码,来自上面链接的教程:

public class MainActivity extends ActionBarActivity { ... }

并在清单中的 标签中

android:theme="@style/Theme.AppCompat.Light"

这是否足以使操作栏出现在较低版本的 android 中,还是应该在较低版本中除了主要活动之外不显示操作栏? 我想在继续教程之前解决这个问题。

如果我的问题需要更多说明,我很乐意提供。感谢所有帮助。谢谢!

【问题讨论】:

  • 关于主页按钮:从 API 14 开始,您需要在早期 API 中自动启用按钮时调用 setHomeEnabled(true)

标签: android android-actionbar


【解决方案1】:

我没有使用过AppCompat,但我推荐ActionBarSherlock appCompact,非常好用。链接:http://actionbarsherlock.com/

您还可以使用以下方式自定义样式:http://jgilfelt.github.io/android-actionbarstylegenerator/

祝你好运;)

【讨论】:

    【解决方案2】:

    我发现我做错了什么。 按照教程,第二个活动将没有 actionBar。

    在每个activity的java文件中,类必须继承ActionbarActivity而不是Activity。 (本教程仅明确告知更改主要活动)
    --> 这使得动作栏出现在每个活动中。

    为了让后退或主页按钮出现在所有版本中,我这样做了:

    //Make sure we're running on HONEYCOMB or higher to use ActionBar APIs
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                getActionBar().setDisplayHomeAsUpEnabled(true);
            }
            if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB && Build.VERSION.SDK_INT >= 7 ) {
                getSupportActionBar().setDisplayHomeAsUpEnabled(true); //for older versions
                //getSupportActionBar().setHomeButtonEnabled(true); //without arrow
            }
    

    默认情况下,第一个 if 语句应该已经存在(我将其注释掉,因为它被忽略了教程中的一些代码示例。保留它!)。 getSupportActionBar() 需要在较旧的 API 上使用(确保正确包含 appcompat 库)。在旧 API 上使用 getActionbar() 会导致强制关闭。 使用 setHomeButtonEnabled() 也可以,但在操作栏中没有

    感谢您的回复。如果有人有其他建议或提示,我们随时欢迎。 (是否都需要 if 语句?)

    【讨论】:

      猜你喜欢
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多