android 自定义toolBar上的 action item

1.先看一下效果

2.自定义的view,action_view_auto_like.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/action_auto_like_button"
android:layout_width="70dp"
android:layout_height="30dp"
android:scaleType="centerInside"
android:background="@android:color/transparent"
android:src="@drawable/btn_nav_autoliker">
</ImageButton>
</FrameLayout>

3.自定义的menu,menu_tinder_liker.xml

1
2
3
4
5
6
7
8
9
10
11
12
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tinder="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_auto"
android:actionLayout="@layout/action_view_auto_like"
android:icon="@drawable/btn_nav_autoliker"
android:orderInCategory="1"
android:title="@string/action_auto_like"
tinder:actionLayout="@layout/action_view_auto_like"
tinder:showAsAction="always"/>
</menu>

4.在fragment 中配置

现在onCreateView中加上setHasOptionsMenu(true);,让系统在fragment中初始化menu。

1
2
3
4
5
6
7
8
9
10
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_tinder_like, menu);
MenuItem searchItem = menu.findItem(R.id.action_auto);
FrameLayout layout = (FrameLayout) MenuItemCompat
.getActionView(searchItem);
layout.findViewById(R.id.action_auto_like_button)
.setOnClickListener(this);
super.onCreateOptionsMenu(menu, inflater);
}

然后在onClick中加入你的逻辑。