您的位置:首页 > 移动开发 > Android开发

如何自定义ActionProvider

2015-05-12 15:09 120 查看
自定义一个MyActionProvider类,继承v4包下的ActionProvider(使用兼容Theme)

重写hasSubMenu(),返回true

重写onPrepareSubMenu()方法,设置submenu的title、icon、点击事件

package com.example.actionbartest.utils;

import android.R;
import android.content.Context;
import android.support.v4.view.ActionProvider;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.SubMenu;
import android.view.View;
import android.widget.Toast;

/**
* 写一个带有自定义下拉submenu的ActionProvider
* @author Frank
*
*/
public class MyActionProvider extends ActionProvider {

public MyActionProvider(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

@Override
public View onCreateActionView() {
// TODO Auto-generated method stub
return null;
}

/**
* 重写hasSubMenu,返回true。
*/
@Override
public boolean hasSubMenu() {
// TODO Auto-generated method stub
return true;
}

@Override
public void onPrepareSubMenu(SubMenu subMenu) {
// TODO Auto-generated method stub
subMenu.clear();
subMenu.add("sub title").setIcon(R.drawable.ic_dialog_email).setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(getContext(), "this is sub1", Toast.LENGTH_SHORT).show();
return true;
}
});
subMenu.add("sub title2").setIcon(R.drawable.ic_dialog_map).setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
Toast.makeText(getContext(), "this is sub2", Toast.LENGTH_SHORT).show();
return true;
}
});
}

}


4、在menu.xml中注册item

<item
android:id="@+id/action_show"
android:icon="@drawable/ic_action_alarms"
android:title="Show"
app:actionProviderClass=
"com.example.actionbartest.utils.MyActionProvider"
app:showAsAction="always"/>


这样就简单的设置了一个ActionProvier,点击会出现两个subtitle
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android v4