使用预先存在的操作栏样式来设置工具栏的样式

时间:2014-10-30 18:29:30

标签: android android-appcompat material-design

我正在将应用从AppCompat-v20迁移到AppCompat-v21。作为该过程的一部分,我试图离开Action Bar,并将其替换为Toolbar,以便我们可以充分利用所有新的Material Design优势。

以前,我们已经在一个样式中定义了有关AB的displayOptions的所有信息,然后我们将该样式设置为Activity的主题中的actionBarStyle。但是,现在我正在扩展Theme.AppCompat.NoActionBar,这些属性不再受到尊重,这是有道理的,因为我的主题扩展了Theme.AppCompat.NoActionBar。与此同时,我仍然希望将displayOptions应用于之前的相同位置(即我希望能够指定我是否要使用徽标或显示家庭作为主题的一部分)。

我知道我可以通过将displayOptions放到主题上并自己解析它来实现这一点,但我想知道AppCompat中是否有Toolbar的任何支持自动处理这个逻辑。

1 个答案:

答案 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" />

如果您使用的是ActionBarActivitiesFragments,则可以调用以下内容让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