个人开发笔记
安卓5.0之后继承AppCompatActivity,出现了一个ActionBar
1、初始画面
继承AppCompatActivity会出现初始的ActionBar
2、标题 (红色微标题图片)
一、标题用图片替换(没有布局)
效果图:由于默认标题图片是靠左边的
代码:
@Override
protected void initActionBar() {
super.initActionBar();
//自定义logo
ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.app_title_hui_ting);//自定义logo图标,标题文字在清单文件中已经设为空了,所有没有显示文字
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);//显示自定义
}
二、标题用图片替换(有布局)
效果图:布局设置标题居中
代码:
@Override
protected void initActionBar() {
super.initActionBar();
//标题布局配置
ActionBar.LayoutParams alTitle = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER
);
View viewTitleBar = getLayoutInflater().inflate(R.layout.app_title_hui_ting, null);
ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(viewTitleBar, alTitle);
actionBar.setDisplayHomeAsUpEnabled(false);//去掉导航
actionBar.setDisplayShowTitleEnabled(false);//去掉标题
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);//设置自定义的Custom
actionBar.setDisplayShowCustomEnabled(true);//显示自定义Custom
}
3、标题-子标题
隐藏Label标签:actionBar.setDisplayShowTitleEnabled(false);
设置标题,一个主标题,一个子标题
actionBar.setSubtitle(“Inbox”);
actionBar.setTitle(“Label:important”);
4、背景色
ActionBar的背景色在style.xml中定义-注意兼容,由于兼容问题我的背景色始终显示不出来
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowContentOverlay">@null</item>//去掉阴影<!-- 设置ActionBar背景色 --> <item name="android:actionBarStyle">@style/MyActionBar</item> <!--兼容--> <item name="actionBarStyle">@style/MyActionBar</item></style><!-- ActionBar属性 --> <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="android:background">@color/app_bg_color</item> <!-- Support library compatibility --> <item name="background">@color/app_bg_color</item> </style>
5、去除阴影-见4
6、Fragment中调用Activity中的ActionBar
((AppCompatActivity)getActivity()).getSupportActionBar().hide();
7、返回按钮
actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true); //显示返回按钮
actionBar.setHomeAsUpIndicator(R.drawable.back); //替换图标
8、创建菜单
java:
/* 创建Menu菜单 */
@Override
public boolean onCreateOptionsMenu(Menu menu) {//创建Menu菜单
getMenuInflater().inflate(R.menu.activity_main, menu);
//搜索监听
SearchView searchView = (SearchView) menu.findItem(
R.id.action_search).getActionView();
//searchView.setOnQueryTextListener((OnQueryTextListener) this);// 搜索的监听
return true;
}
menu:activity_main.xml
<pre name="code" class="java"><menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto">
<!-- Search, should appear as action button -->
<!--yourapp:actionViewClass="android.support.v7.widget.SearchView"-->
<item
android:id="@+id/action_search"
android:icon="@mipmap/btn_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
<!-- 绘厅 home -->
<item
android:id="@+id/hui_ting_home"
android:icon="@mipmap/ic_hui_ting_home"
android:title="@string/hui_ting_home"
yourapp:showAsAction="ifRoom" />
</menu>
9、Menu菜单点击
/* 处理ActionBar中菜单条目的点击事件 */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_search:
UiUtils.showToast("我是搜索时间");
break;
case R.id.hui_ting_home:
UiUtils.showToast("我是主页");
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
10、ActionBar显示隐藏
如果没有第二句,系统自带一个隐藏的动画(慢慢有下往上隐藏)
//ActionBar隐藏
actionBar.hide();
actionBar.setShowHideAnimationEnabled(false);//取消隐藏动画
//ActionBar显示
actionBar.show();
actionBar.setShowHideAnimationEnabled(false);//取消显示动画