适用于API 19的Android工具栏? (对于API 21工作正常)

我用过如何使用DrawerLayout显示ActionBar / Toolbar和状态栏? 回答Suyash(我还添加了一个工具栏,可能不正确)将导航抽屉放在“操作栏”上。

对于API级别21而不是“操作栏”我使用了工具栏,它工作正常。

但对于API 19,这不起作用:

if(Build.VERSION.SDK_INT > 19) { final Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); } 

您是否知道如何将NavigationDrawer放在API级别19的“操作栏”(或工具栏)上?

如果您使用工具栏,那么您应该能够在任何API中查看完全相同的工具栏。

为此,您应该在res / layout中使用XML:

  

在您的主要布局中,您应该包含它:

  

您还应该在styles.xml上将样式设置为No Action Bar

  

但对于API 21,您应该有另一个styles.xml:

  

最后在您的主要活动中

 toolbar = (Toolbar) findViewById(R.id.app_bar); setSupportActionBar(toolbar); 

最后,你想对工具栏做任何事情,获得​​它并像旧的Action Bar一样对待它:

 getSupportActionBar().setHomeAsUpEnabled(true); 

前棒棒糖设备的材料设计

您的所有主题(需要操作栏/工具栏)必须从Theme.AppCompatinheritance。 有可用的变体,包括Light和NoActionBar。

在对操作栏上显示的任何内容进行充气时(例如工具栏中的列表导航SpinnerAdapter),请确保使用操作栏的主题上下文,通过getSupportActionBar()。getThemedContext()检索。


Android支持库22.1

AppCompat允许您使用android:theme for Toolbars(弃用app:之前使用的主题),更好的是,它为API 11+设备上的所有视图带来了android:theme支持。