从 OnClickListener 打开菜单
open a menu from OnClickListener
我想从 OnClickListener
打开菜单
不使用 onCreateOptionsMenu
方法
我的代码:
toolbar.setNavigationIcon(R.drawable.week); //your icon
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
}
});
提前致谢!
我认为您想 show/hide 一个基于用户操作的菜单项。为此,您必须使用 onCreateOptionsMenu
,并且每当您想要 show/hide 菜单项时,然后调用 invalidateOptionsMenu
(此方法将再次调用 onCreateOptionsMenu
)。
boolean mShowMenu = false;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.your_menu, menu);
MenuItem item = menu.findItem(R.id.your_menu_item);
item.setVisible(showMenu);
return true;
}
并且在您的代码中,当您想要显示菜单项时。
toolbar.setNavigationIcon(R.drawable.week); //your icon
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
mShowMenu = true;
invalidateOptionsMenu();
}
});
并尝试一下。
您应该需要在 xml 文件中创建菜单界面,像这样
<item
android:id="@+id/settings"
android:title="Setting"
app:showAsAction="never" />
<item
android:id="@+id/my_activity"
android:title="My Activity"
app:showAsAction="always"
android:icon="@android:drawable/btn_radio"/>
之后,在特定 class 的 Java 代码中,您需要像这样创建代码;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.my_activity) {
Intent intent1 = new Intent(this,MyActivity.class);
this.startActivity(intent1);
return true;
}
if (id == R.id.settings) {
Toast.makeText(this, "Setting", Toast.LENGTH_LONG).show();
return true;
}
return super.onOptionsItemSelected(item);
}
希望这可以解决您的问题
我想从 OnClickListener
打开菜单
不使用 onCreateOptionsMenu
方法
我的代码:
toolbar.setNavigationIcon(R.drawable.week); //your icon
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
}
});
提前致谢!
我认为您想 show/hide 一个基于用户操作的菜单项。为此,您必须使用 onCreateOptionsMenu
,并且每当您想要 show/hide 菜单项时,然后调用 invalidateOptionsMenu
(此方法将再次调用 onCreateOptionsMenu
)。
boolean mShowMenu = false;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.your_menu, menu);
MenuItem item = menu.findItem(R.id.your_menu_item);
item.setVisible(showMenu);
return true;
}
并且在您的代码中,当您想要显示菜单项时。
toolbar.setNavigationIcon(R.drawable.week); //your icon
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
mShowMenu = true;
invalidateOptionsMenu();
}
});
并尝试一下。
您应该需要在 xml 文件中创建菜单界面,像这样
<item
android:id="@+id/settings"
android:title="Setting"
app:showAsAction="never" />
<item
android:id="@+id/my_activity"
android:title="My Activity"
app:showAsAction="always"
android:icon="@android:drawable/btn_radio"/>
之后,在特定 class 的 Java 代码中,您需要像这样创建代码;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.my_activity) {
Intent intent1 = new Intent(this,MyActivity.class);
this.startActivity(intent1);
return true;
}
if (id == R.id.settings) {
Toast.makeText(this, "Setting", Toast.LENGTH_LONG).show();
return true;
}
return super.onOptionsItemSelected(item);
}
希望这可以解决您的问题