为弹出菜单项充气自定义布局

时间:2018-04-09 14:09:04

标签: android popup menuitem popupmenu

是否可以为Android中的每个弹出菜单项创建自定义布局?我为列表视图夸大了自定义布局,但是我在弹出菜单项时遇到了一些麻烦。

我有这段代码(已经删除了一些对这个问题不够具体的行)。

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    MenuInflater inflater = getMenuInflater();
    View menu_hotlist;

    inflater.inflate(R.menu.menu_alert, menu);
    menu_hotlist = menu.findItem(R.id.menuItem).getActionView();

    menu_hotlist.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            showProfileMenuPopup(v);
        }
    });
return true;
}

public void showProfileMenuPopup(View v) {
    PopupMenu popup = new PopupMenu(Home.this, v);

    for(int index = 0; index < list.size(); index++)
    {
        Menu menu = popup.getMenu();
        menu.add(Menu.NONE, index, index + 1, text);

        MenuItem item = menu.getItem(index);
        item.setActionView(R.layout.custom);

        TextView t1 = (TextView) item.getActionView().findViewById(R.id.textView);
        t1.setText(text);
    }

    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
            Intent intent1 = new Intent(Activity1.this, Activity2.class);
            intent1.putExtra("key", value);
            startActivity(intent1);

            finish();
            return true;
        }
    });
    popup.show();
}

item.setActionView(R.layout.custom)似乎对弹出菜单项的自定义布局没有任何影响,可能是我没有正确使用它或错过了一些代码行?请帮忙。

我搜索过Stack Overflow,但它只讨论了操作栏菜单项的自定义布局,但没有弹出菜单项。

提出问题的时间早于要求,以便人们有足够的时间来回答问题。

我正在尝试为不同组中的弹出菜单项获取不同的背景颜色,但无法更改特定的项目顺序(如在电子邮件中)。是否有一种简单的方法可以更改弹出菜单项的背景颜色?

  • 使用spannable字符串可以格式化弹出菜单项中的文本,但背景颜色仅针对文本而不是整个弹出菜单项进行更改。

  • 在HTML模式下使用背景颜色文本也无济于事。

  • 使用ContextWrapper ctw = new ContextThemeWrapper(Activity.this, R.style.custom)对弹出菜单项没有任何影响。

  • 或者是否需要使用某段代码覆盖OnPrepareOptionsMenu(Menu menu)函数?

请帮助我在弹出菜单项上夸大自定义布局,以便它在一般情况下(将来)足够有用。

当然还有其他选择,而不是使用弹出式菜单项,但它们对我的工作来说根本不够令人印象深刻!

  • 创建弹出对话框,其中包含自定义布局。只要在操作栏中的菜单项上单击其他任何地方的活动,弹出对话框就会被解除。

  • 创建弹出菜单项的子菜单,其中所有这些项都属于与其他弹出菜单项组不同的组。

提前谢谢。

0 个答案:

没有答案