是否可以为上下文菜单的子菜单添加自定义标题?
我写了这个方法来改变子菜单标题的外观(背景绿色和文本颜色白色)
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 更改标题背景。如果这会起作用,那也一样好