0

是否可以为上下文菜单的子菜单添加自定义标题?

我写了这个方法来改变子菜单标题的外观(背景绿色和文本颜色白色)

public void setContextMenuHeader(SubMenu menu, String title, int iconId){
    if(menu == null){
        return;
    }
    View vgDialogTitle = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_title, null);
    ((TextView)vgDialogTitle.findViewById(R.id.dialog_title_text)).setText(title);
    ((ImageView)vgDialogTitle.findViewById(R.id.dialog_title_icon)).setImageResource(iconId);
    menu.clearHeader();
    menu.setHeaderView(vgDialogTitle);

}

R.layout.dialog_title

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/green"
    android:orientation="horizontal" >
<ImageView
    android:id="@+id/dialog_title_icon"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" />
<TextView
    android:id="@+id/dialog_title_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:background="@android:color/transparent"
    android:gravity="center_vertical"
    android:padding="@dimen/dialog_padding"
    android:textColor="@color/white"
    android:textSize="20sp"
    android:textStyle="bold" />
</LinearLayout>

但是当我调用这个方法时,我得到以下错误:

java.lang.IllegalStateException:指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。

我可以使用相同的布局文件(使用 setHeaderView())更改普通上下文菜单的标题外观,但不能用于子菜单

这就是我如何调用该方法来尝试更改子菜单的标题:

@Override
public boolean onContextItemSelected(MenuItem item) {
    ContextMenuInfo menuInfo = item.getMenuInfo();
    if (menuInfo != null) {
        AdapterContextMenuInfo acmInfo = (AdapterContextMenuInfo) menuInfo;
        lastCheckedItemPosition = acmInfo.position;
    }
    final FavoriteItem favouriteItem = favouriteAdapter.getItem(lastCheckedItemPosition);
    setContextMenuHeader(item.getSubMenu(), favouriteItem.getName(), R.drawable.ic_tab_favorite);

编辑:我也无法使用 style.xml 更改标题背景。如果这会起作用,那也一样好

4

0 回答 0