导航抽屉与支持库版本21无法正常工作

时间:2014-10-22 11:20:48

标签: java android

我刚刚更新了我的android SDK以获得android 5更新。这些是我做的步骤:

  • 更新了android-SDK
  • 更新了eclipse插件
  • 更新了我的项目构建目标= 21和targetSdkVersion = 21

然后我运行我的应用程序(使用compat-v7库),发现导航抽屉似乎有问题。操作栏中的应用程序图标消失,整体风格似乎不正确(参见图2)。

所以我采用了"Creating a Navigation Drawer"示例并执行了以下测试:

下载示例项目,更新构建目标和targetSdk,并用Compat-v7库(版本21)替换android-support-v4.jar。 将ActionBarDrawerToggle导入从android.support.v4...更改为import android.support.v7...

结果是正确的:

图片1:

enter image description here

然后我尝试将MainActivity父类从Activity更改为ActionBarActivity,将getActionBar()调用更改为getSupportActionBar(),将getFragmentManager()更改为getSupportFragmentManager()

还将android:theme="@style/Theme.AppCompat"主题添加到活动

虽然有效,但缺少应用程序图标,并且选项菜单未显示为操作。请参阅下面的屏幕截图。

图片2:

enter image description here

我该如何解决?

更新

使用代码:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayShowHomeEnabled(true);

你得到以下栏:

enter image description here

这是相当不错的,但我喜欢紧凑型版本,其中抽屉指示器/箭头没有带图标的填充(见下图)。我怎样才能实现它?

enter image description here

4 个答案:

答案 0 :(得分:2)

这实际上是新Material Design范例的预期行为。根据{{​​3}}的官方文件:

  

在现代Android UI中,开发人员应该更多地依赖于工具栏的视觉上不同的颜色方案而不是应用程序图标。不鼓励在API 21设备和更新版本上使用应用程序图标和标题作为标准布局。

答案 1 :(得分:1)

也许这会对你有所帮助:

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

<强>更新 你可以在这里找到第二个问题的答案:

How to change Toolbar navigation icon and options menu margin

答案 2 :(得分:0)

这是按预期工作的,现在默认不显示应用程序图标。您可以调用以下内容再次显示该图标。

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);

答案 3 :(得分:0)

切换到新的ActionBarActivity后,它看起来像隐藏了Actionbar的home / Logo。并且@ style / Theme.AppCompat默认没有Logo。您可以使用.setHomeButtonEnabled(true);

启用它