我正在将应用从AppCompat-v20迁移到AppCompat-v21。作为该过程的一部分,我试图离开Action Bar,并将其替换为Toolbar
,以便我们可以充分利用所有新的Material Design优势。
以前,我们已经在一个样式中定义了有关AB的displayOptions的所有信息,然后我们将该样式设置为Activity的主题中的actionBarStyle
。但是,现在我正在扩展Theme.AppCompat.NoActionBar,这些属性不再受到尊重,这是有道理的,因为我的主题扩展了Theme.AppCompat.NoActionBar
。与此同时,我仍然希望将displayOptions
应用于之前的相同位置(即我希望能够指定我是否要使用徽标或显示家庭作为主题的一部分)。
我知道我可以通过将displayOptions
放到主题上并自己解析它来实现这一点,但我想知道AppCompat中是否有Toolbar
的任何支持自动处理这个逻辑。
答案 0 :(得分:4)
使用Toolbar
您需要记住的是,它基本上只是一个视图组,因此您可以比ActionBar
更轻松地自定义它。话虽这么说,您可以使用样式来改变Toolbar
的外观,但是有一些设置方法,如标题/徽标/导航。
以下是样式化Toolbar
:
<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
如果您使用的是ActionBarActivities
和Fragments
,则可以调用以下内容让Android知道如何使用您的Toolbar
作为supportActionBar。这意味着您对getSupportActionBar()
的所有通话仍然有效。
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
新的Material Design指南已开始不再使用Logos,但如果您坚持设置,您可以这样:
toolbar.setLogo();
你的问题有点模糊,所以要获得Chris Banes和Nick Butcher以及this post的更多信息结帐the documentation。