android 自定义actionbar前面有一块空白,ActionBar自定义布局并填充,设置的样式,并封装ActionBar。。...

本文详细介绍了如何在Android应用中自定义ActionBar,通过引入自己的布局文件提高可维护性。在实现过程中,解决了布局填充不全、边距问题,通过在样式中设置属性消除左右间隔,并调整了底部间隙。在BaseActivity中封装了ActionBar的设置,包括去除5.0以上版本的阴影效果,并展示了具体的代码实现。最后给出了自定义布局文件的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为某些需求不得不使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" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值