自定义的ActionProvider在ActionBar中点击了没显示出来,新手求解

meng_qi 2016-02-02 02:41:56
主要代码:
自定ActionProvider的代码:
import android.content.Context;
import android.view.ActionProvider;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;

/**
* Created by mq on 2016-02-02.
*/
public class stu_ActionProvider extends ActionProvider {
public stu_ActionProvider(Context context) {
super(context);
}

@Override
public View onCreateActionView() {
return null;
}

@Override
public void onPrepareSubMenu(SubMenu subMenu) {
super.onPrepareSubMenu(subMenu);
subMenu.clear();
subMenu.add("添加学员").setIcon(R.drawable.stu_press);
subMenu.add("我的学员").setIcon(R.drawable.stu_press);
subMenu.add("网络学员").setIcon(R.drawable.stu_press);
}
@Override
public boolean hasSubMenu() {
return true;
}
}



menu.xml代码

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mq.oa.Index">
<item
android:id="@+id/action_share"
android:actionProviderClass="com.mq.oa.stu_ActionProvider"
android:icon="@drawable/caidan"
app:showAsAction="ifRoom"
android:title="更多功能" />
</menu>

最后是Activity.java的主要代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.stu_menu, menu);
return true;
}
// Menu中overflower菜单图标显示实现【重写onMenuOpened方法,使用反射原理】
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {
if (menu.getClass().getSimpleName().equals("MenuBuilder")) {
try {
Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
}
}
}
return super.onMenuOpened(featureId, menu);
}

// 由于手机硬件情况的不同,在没有物理Menu键的手机上,ActionBar的overflow按钮会有显示不出
// 来的情况,可以通过反射的方式修改ViewConfiguration类中的sHasPermanentMenuKey静态变量的
// 值永远为false,系统就是根据这个变量值来判断手机有没有物理Menu键
private void setOverflowShowingAlways() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
} catch (Exception e) {
e.printStackTrace();
}
}

看了许多网上的也是这么写的 为啥我的就不出来下拉菜单 哪错了 求解
...全文
230 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlongfu 2016-05-12
  • 打赏
  • 举报
回复
顶!d=====( ̄▽ ̄*)b 我也不知道

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧