我希望通过单击btnDelete按钮显示自定义菜单deleterecord.xml。它不是btnDelete的上下文菜单,打开上下文菜单需要长按,因此您无法使用registerForContextMenu
来执行此操作。
private void SetButtons() {
findViewById(R.id.btnMore).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openOptionsMenu();
}
});
findViewById(R.id.btnDelete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//How to open deleterecord.xml menu
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_more, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.MoreShare:
return true;
case R.id.MoreSettings:
return true;
case R.id.MoreAbout:
return true;
}
return super.onOptionsItemSelected(item);
}
这是选项菜单menu_more.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="info.dodata.unlock.UnlockMain" >
<item android:id="@+id/MoreShare"
android:title="@string/MoreShare" />
<item android:id="@+id/MoreUninstall"
android:title="@string/MoreUninstall" />
<item android:id="@+id/MoreAbout"
android:title="@string/MoreAbout" />
</menu>
这是我的自定义菜单deleterecord.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/ContextDeleteLess"
android:title="Delete 10 records" />
<item android:id="@+id/ContextDeleteMore"
android:title="Delete 20 records"/>
</menu>
答案 0 :(得分:0)
您可以在按钮下的xml布局中设置按钮onClick by android:onClick =“methodName”。此方法应位于您的视图类中,并且应该具有单个View参数。您可以使用它来确定视图是打开一个菜单还是另一个菜单。如果它不是按钮视图,请确保设置android:clickable =“true”。
答案 1 :(得分:0)
这是什么其他菜单?它是带菜单选项的对话框吗? 但是,如果您想使用您的选项显示Dialog,您可以执行以下操作:
findViewById(R.id.btnAnoter).setOnClickListener(new View.OnClickListener(){
@覆盖
public void onClick(查看v){
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.menus);//This is your menu view.
dialog.show();
}
});
您需要在全局变量中存储菜单引用,然后在按钮单击时再次膨胀菜单。以下是相同的代码:
public class MainActivity extends Activity {
private Menu menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
openMenu1();
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
openMenu2();
}
});
}
private void openMenu1() {
menu.clear();
getMenuInflater().inflate(R.menu.main, menu);
openOptionsMenu();
}
private void openMenu2() {
menu.clear();
getMenuInflater().inflate(R.menu.main1, menu);
openOptionsMenu();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
this.menu = menu;
menu.clear();
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 2 :(得分:0)
您可以创建菜单布局并尝试将其打开为弹出窗口。
findViewById(R.id.btnAnoter).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent popup=new Intent(getBaseContext(),Islemler.class);
popup.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(popup);
}
});
这就是我设法创建自定义菜单窗口的方法。