首先看看我们这次ActionBar的最终效果
Step1:新建一个Layout文件,layout.menu_home.xml 如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" >
<ImageView
android:layout_width="wrap_content"
android:layout_marginLeft="@dimen/action_bar_icon_margin"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/ic_action_bar" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/home_activity"
android:textColor="@color/white"
android:textSize="@dimen/action_bar_title" />
<ImageView
android:layout_width="wrap_content"
android:layout_marginRight="@dimen/action_bar_icon_margin"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:src="@drawable/ic_action_me" />
</RelativeLayout>
Step2:在onCreate中添加代码
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.menu_home);
接下来我们会看到这样的结果,为了便于观察我把ActionBar的背景换成绿色:
我们看到,在自定义的Layout左边有几个像素的黑色,经过多番调查,发现这是AppTheme中ActionbarStyle的默认样式,他总有这么几个像素的Padding,接下来我们改变默认样式就可以了。
Step3:在styles.xml添加或修改这么几行代码
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<!-- <item name="logo">@drawable/ic_action_bar</item> -->
<!-- <item name="displayOptions">useLogo|showHome|showTitle</item> -->
<item name="contentInsetStart">0dp</item>
<item name="contentInsetLeft">0dp</item>
</style>
我们再看看最终效果
项目中的资源链接:
http://www.icons4android.com/