因为某些需求不得不使ActionBar引入自己写的布局文件,这样更有可维护性。中间也走了很多坑,布局文件并不会填充整个ActionBar的空间,左边右边下面会留有间隔,看过一些资料都试了一下,终于搞好了。
左右间隔问题,会在样式里面有属性来设置为0dp
下面有间隙,在样式里固定写死高度这个属性即可。
好了,贴代码吧。
1.在清单文件里引用一下你的主题样式:
android:name=".app.MyApplication"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:theme="@style/MyAppTheme">
2.自定义的样式:注释着重看下
@style/MyActionBarStyle1
@style/MyActionBarStyle1
51dp
@null
@color/white
@color/white
0dp
0dp
3.在BaseActivity中对ActionBar进行封装设置
/**
* 自定义actionBar标题栏
*/
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
View view = LayoutInflater.from(this).inflate(R.layout.layout_title,null);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
actionBar.setCustomView(view,layoutParams);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//21
actionBar.setElevation(0);//5.0以上去阴影
}
tvTitle = (TextView) view.findViewById(R.id.tv_title);
String title = getTitle().toString();
tvTitle.setText(title);
ivBack = (ImageView) view.findViewById(R.id.iv_back);
ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
getTitle()可以获得activity中label标签的值
4.布局文件
android:layout_width="match_parent"
android:layout_height="55dp"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
android:id="@+id/iv_back"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@mipmap/back_home"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_alignParentLeft="true"
android:padding="3dp"/>
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:includeFontPadding="false"
android:maxEms="15"
android:maxLines="1"
android:text=""
android:textColor="@color/text_primary"
android:textSize="17sp"
android:layout_centerInParent="true"/>
android:id="@+id/ll_right"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone" />
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#E5E6E7" />