Android的动作条ActionProvider子 [英] Android ActionBar ActionProvider submenu
问题描述
我只是不能得到ActionProvider显示一个子菜单,我不undestand原因。在XML我有我的菜单定义的:
I just can't get the ActionProvider to show a submenu and I don't undestand why. I have my menu defined in xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/dossier_menu"
android:showAsAction="always"
android:actionProviderClass="com.some.other.mockup.MActionProvider">
</item>
</menu>
行动提供一流的:
action provider class:
public class MActionProvider extends ActionProvider {
private static final String TAG = "MActionProvider";
private static final int LIST_LENGTH = 3;
private Context context;
/**
* Creates a new instance.
*
* @param context Context for accessing resources.
*/
public MezzActionProvider(Context context) {
super(context);
this.context = context;
}
@Override
public View onCreateActionView() {
View view = View.inflate(context, R.layout.action_layout, null);
//view must be returned not tetxView or just buttonView
return view;
}
@Override
public boolean hasSubMenu() {
Log.d(TAG, "hasSubMenu");
return true;
}
@Override
public boolean onPerformDefaultAction() {
Log.d(TAG, "onPerformDefaultAction");
return super.onPerformDefaultAction();
}
/**add submenu in code**/
@Override
public void onPrepareSubMenu(SubMenu subMenu) {
Log.d(TAG, "onPrepareSubMenu");
subMenu.clear();
subMenu.add(Menu.NONE, Menu.NONE, 1,"Mezz 1");
subMenu.add(Menu.NONE, Menu.NONE, 2, "Mezz 2");
}
}
和操作布局是:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mezz State ++"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_margin="4dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="@dimen/buttonHeight"
android:src="@android:drawable/ic_menu_add"
android:layout_alignParentLeft="true"
android:id="@+id/img1"
android:layout_below="@id/textView"/>
我尝试使用按钮,而不是图像视图,甚至试图添加子菜单以XML的菜单项,当我点击的动作提供者,它只是不显示任何子我想不出为什么。
I tried using button instead of image view, even tried adding submenu to the menu item in xml, when I click on the action provider it just doesn't show any submenu I can't figure out why.
感谢
推荐答案
我已经找到了答案在这里:
I have found the answer here:
<一个href="http://stackoverflow.com/questions/19439106/cant-display-sub-menu-for-custom-actionprovider">Can't显示子菜单的自定义ActionProvider
问题是我的onCreateActionView()方法没有返回null。
Problem is my onCreateActionView() method doesn't return null.
所以,感谢杰森·罗宾逊回答方法如下:
So thanks to Jason Robinson answer here is how:
@Override
public View onCreateActionView() {
View view = View.inflate(context, R.layout.action_layout, null);
final PopupMenu menu = new PopupMenu(mContext, view);
menu.inflate(R.menu.submenu);
menu.setOnMenuItemClickListener(this);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v){
menu.show();
}
});
return view;
}
和submenu.xml包括:
and submenu.xml contains:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/mezzSub1"
android:title="Mezz 1"
android:showAsAction="always"></item>
<item
android:id="@+id/mezzSub2"
android:title="Mezz 2"
android:showAsAction="always"></item>
</menu>
这篇关于Android的动作条ActionProvider子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!