gpt4 book ai didi

Android MenuItem 自定义布局

转载 作者:IT老高 更新时间:2023-10-28 23:31:15 29 4
gpt4 key购买 nike

我有一个 PopupMenu当我单击操作栏中的操作按钮时出现。我希望我的 PopupMenu 中的 MenuItem 具有这样的自定义布局:

布局/menu_item_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/menuItemLayout"

android:orientation="horizontal" >

<ImageView
android:id="@+id/imageViewMenuItem"
android:layout_width="20dip"
android:layout_height="20dip"
android:src="@drawable/abc_list_focused_holo" />

<TextView
android:id="@+id/textViewMenuItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextViewMenuItem" />

</LinearLayout>

这是 PopUpMenu 的 xml:

菜单/pop_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="apparound.actiobarpopupstylefacebook.Main" >

<item
android:id="@+id/popupItem"
android:showAsAction="ifRoom"/>
</menu>

在我的 Activity 代码如下:

public void showPopup(int idR){
View menuItemView = findViewById(idR);
PopupMenu popup = new PopupMenu(this, menuItemView);
MenuInflater inflate = popup.getMenuInflater();
inflate.inflate(R.menu.pop_menu, popup.getMenu());
MenuItem menuItem= popup.getMenu().findItem(R.id.popupItem);
menuItem.setActionView(R.layout.menu_item_layout);
popup.show();
}

但是当出现弹出菜单时,项目是空的。使用 setActionview() 方法我错了吗?谢谢。

最佳答案

对于不能使用菜单的自定义布局,一个替代选项是 PopupWindow

PopupWindow popupwindow_obj = popupDisplay();
popupwindow_obj.showAsDropDown(clickbtn, -40, 18); // where u want show on view click event popupwindow.showAsDropDown(view, x, y);

public PopupWindow popupDisplay()
{

final PopupWindow popupWindow = new PopupWindow(this);

// inflate your layout or dynamically add view
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = inflater.inflate(R.layout.mylayout, null);

Button item = (Button) view.findViewById(R.id.button1);

popupWindow.setFocusable(true);
popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
popupWindow.setContentView(view);

return popupWindow;
}

在名为 my layout.xml 的 res/layout 文件夹中创建此 XML 文件

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Window test" />
</LinearLayout>

关于Android MenuItem 自定义布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23538929/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com