如果您曾经使用AppCompatActivity 并且走上了不使用它的道路,因为您不想获得它提供的自动ActionBar,因为您想分离出Toolbar,因为你的 Material Design 需求和 CoordinatorLayout 或 AppBarLayout,那么,考虑一下:
你仍然可以使用AppCompatActivity,你不需要停止使用它,你可以在你的xml中使用<android.support.v7.widget.Toolbar>。只需关闭操作栏style如下:
首先,从您喜欢的 styles.xml 中的一个 NoActionBar 主题中派生出一种样式,我使用了 Theme.AppCompat.Light.NoActionBar,如下所示:
<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/primary_dark</item>
...
...
</style>
在您的应用清单中,选择您刚刚定义的子样式主题,如下所示:
<activity
android:name=".activity.YourSuperCoolActivity"
android:label="@string/super_cool"
android:theme="@style/SuperCoolAppBarActivity">
</activity>
在您的 Activity Xml 中,如果工具栏是这样定义的:
...
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
/>
...
然后,这是重要的部分,您将支持操作栏设置到您正在扩展的 AppCompatActivity,以便您的 xml 中的工具栏,变成操作栏。我觉得这是一种更好的方式,因为您可以简单地执行 ActionBar 允许的许多事情,例如菜单、自动活动标题、项目选择处理等,而无需添加自定义点击处理程序等。
在您的 Activity 的 onCreate 覆盖中,执行以下操作:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_super_cool);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Your toolbar is now an action bar and you can use it like you always do, for example:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}