【问题标题】:ActionBar not showing on android < 5.0ActionBar 未在 android < 5.0 上显示
【发布时间】:2014-12-05 11:58:53
【问题描述】:

我从 ABS 切换到 AppCompat 和 Material 主题(仅适用于 api 21)

<!--manifest: -->
<application
        android:theme="@style/AppStyle"

<-- values folder -->
<style name="AppStyle" parent="@style/AudioRecTheme">
<style name="AudioRecTheme" parent="@style/Theme.AppCompat.Light">

<!-- values-v21 folder-->
<style name="AudioRecTheme" parent="@android:style/Theme.Material.Light">

我的活动:

public class AudioRecActivity extends FragmentActivity

操作栏仅在 Android 5.0 中显示,否则会丢失。

【问题讨论】:

  • 你是如何应用风格的?

标签: android android-appcompat material-design


【解决方案1】:

首先,要么使用appcompat-v7 使用内置主题,但不能同时用于同一个活动。在这里,您尝试在某些情况下使用Theme.AppCompat.Light,在其他情况下使用Theme.Material.Light,这不仅没有必要,而且AFAIK 也不起作用。如果您打算使用 Theme.AppCompat.Light,请对所有 API 级别都这样做。

其次,如果要使用appcompat-v7Theme.AppCompat.Light,则需要从ActionBarActivity继承。

【讨论】:

  • 我用的是appcompat-v7,但是我希望主题在v21时继承原生Material风格。
  • 如果我继承 ActionBarActivity,它会在 5.0 崩溃,因为我为 Lollipop 使用 Material 主题
  • @AlexandruCircus:然后创建两个单独的活动。您不能让一项活动既继承自 ActionBarActivity,又不继承自 ActionBarActivityappcompat-v7 需要 ActionBarActivity,正如您所注意到的,Theme.Material.* 不能使用 ActionBarActivity
  • 谢谢@CommonsWare!我将使用 2 个单独的活动
  • @AlexandruCircus:当前版本的appcompat-v7 背后的重点是提供与Theme.Material 非常相似的外观,至少对于操作栏本身而言。 “非常相似”!=“相同”,因此存在细微的视觉差异,但不会有太大的差异,以至于普通的检查者会注意到。例如 IIRC,Theme.AppCompat 上操作栏标题的字体要小一些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多