新api推荐带ActionBar的Activity,继承AppCompatActivity 处理标题栏
导入项目工具包。兼容包:
compile 'com.android.support:appcompat-v7:23.3.0'compile 'com.android.support:support-v13:23.3.0'1 .需要给Activity设置主题 无Actionbar即可
android:theme="@style/Theme.AppCompat.Light.NoActionBar">2.用toolbar代替Actionbar
<android.support.v7.widget.Toolbar
android:id="@+id/bmtool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</android.support.v7.widget.Toolbar>在代码中转成Actionbar:
tb= (android.support.v7.widget.Toolbar) findViewById(R.id.bmtool_bar); setSupportActionBar(tb);获取Actionbar:(这里给Actionbar设置了一个home id的属性)
ActionBar ab=getSupportActionBar();
if(ab!=null){
ab.setHomeAsUpIndicator(R.drawable.menu_home);
ab.setDisplayHomeAsUpEnabled(true);
}因为Toolbar 已经加入到Activity 中了,因此选项菜单布局,是可以显示到标题栏中的!:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater=getMenuInflater();
menuInflater.inflate(R.menu.menu_main,menu);
return true;
}
为菜单内容设置菜单项:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.cuizehui.Actitys.HomeActivity">
<item android:id="@+id/more"
android:title="更多"
android:icon="@drawable/ic_drag"
app:showAsAction="always"
android:orderInCategory="100"/>
</menu>3为标题栏设置点击事件:
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.more:
mMenuDialogFragment.show(fragmentManager,ContextMenuDialogFragment.TAG);//这是一个插件!!
break;
case android.R.id.home:
finish();
}
return super.onOptionsItemSelected(item);
}(android.R.id.home 这个ID 对应上面为Actionbar设置home id 的方法和图标)
最后 写一个复用性高的toolbar:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimaryDark"
app:titleTextColor="@android:color/white"
android:fitsSystemWindows="true"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>如果没有设置主题,并使用的是AppCompatActivity
那么可以直接使用activity所使用的actionBar
android.support.v7.app.ActionBar mActionBar=getSupportActionBar();
if(mActionBar!=null){
mActionBar.hide();
}可通过如上方式设置actionBar是否存在并设置样式。
本文介绍如何在Android项目中使用AppCompatActivity与Toolbar替代ActionBar。通过设置主题、布局及代码实现,展示如何定制化标题栏样式及功能。
2521

被折叠的 条评论
为什么被折叠?



