[英]How to create customized menu inside a layout in android?
我想創建一個自定義菜單並將該菜單放在位於RelativeLayout中心的特定布局中,我試圖這樣做但沒有用:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Home" >
<LinearLayout
android:id="@+id/grid1"
android:layout_width="750dp"
android:layout_height="400dp"
android:background="@android:color/darker_gray"
android:layout_centerInParent="true"
android:orientation="vertical" >
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/Main"
android:title="@string/main"/>
<item android:id="@+id/Sub"
android:title="@string/sub"/>
</menu>
</LinearLayout>
</RelativeLayout>
在 Java 中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//RelativeLayout layout = (RelativeLayout) findViewById(R.layout.activity_home);
getMenuInflater().inflate(R.menu.home, menu);
return true;
}
Ps我也嘗試將它放在一個單獨的文件中,然后添加它,但這樣做時它只顯示在操作欄中。
無法直接在您的布局中使用菜單。 而是在 res/menu 文件夾中創建菜單布局。 然后在任何按鈕單擊事件中使用彈出菜單偵聽器對其進行充氣。 下面的鏈接中有一個很好的例子。 您還可以使用PopMenuWindow類將自定義布局用作 popUpMenu。
嘗試以下步驟:
1)在菜單文件夾(/res/menu/menu.xml)中創建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">
<item
android:id="@+id/action_setting_menu"
android:title="@string/menu_setting"
app:showAsAction="collapseActionView"/>
<item
android:id="@+id/action_logout"
android:title="Logout"
app:showAsAction="collapseActionView"/>
</menu>
2)在Activity類中創建函數showMenu(view)
private void showMenu(View view){
PopupMenu popupMenu = new PopupMenu(Activity.this, view);//View will be an anchor for PopupMenu
popupMenu.inflate(R.menu.menu);
Menu menu = popupMenu.getMenu();
popupMenu.setOnMenuItemClickListener(this);
popupMenu.show();
}
3)為 menu設置Anchor ,您要在其中顯示 PopupMenu
LinearLayout layout = findViewById(R.id.grid1);//You can use other view as anchor
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showMenu(view);// call function to show PopupMenu
}
});
將android:showAsAction="never"
放在菜單項中以在菜單中顯示項目。 喜歡
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/Main"
android:title="@string/main"
android:showAsAction="never"/>
<item android:id="@+id/Sub"
android:title="@string/sub"
android:showAsAction="never"/>
</menu>
將菜單布局放在菜單文件夾中(res的子文件夾)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.