所以我有这个代码..我正在使用hack(缺少一个更好的词)强制溢出菜单。我正在使用SubMenu制作溢出项目。
这是我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
main = menu;
getSupportActionBar()
.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// Create the search view
SearchView searchView = new SearchView(getSupportActionBar()
.getThemedContext());
searchView.setQueryHint("Search outlets...");
searchView.setOnQueryTextListener(new OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String query)
{
Toast.makeText(con, "Search: " + query, 0).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText)
{
// TODO Auto-generated method stub
return false;
}
});
main.add("Search")
.setIcon(R.drawable.abs__ic_search)
.setActionView(searchView)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
sub = main.addSubMenu("");
sub.add("All Outlets");
sub.add("Categories");
MenuItem subItem = sub.getItem();
subItem.setIcon(R.drawable.abs__ic_menu_moreoverflow_normal_holo_dark);
subItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(main);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_MENU)
{
main.performIdentifierAction(main.getItem(1).getItemId(), 0);
return true;
}
return super.onKeyUp(keyCode, event);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if (item.getTitle().equals("All Outlets"))
{
Intent alloutlets = new Intent(con, AllOutlets.class);
startActivity(alloutlets);
return true;
}
else if (item.getItemId() == android.R.id.home)
{
finish();
return true;
}
else
{
return false;
}
}
现在每当我按下4.0.4设备上的硬件选项键时,它都会扩展SearchView,而不是向我显示扩展的溢出。
此外,有没有正确的方法来做到这一点?不使用SubMenu和东西。
答案 0 :(得分:1)
我会尝试在xml布局中创建项目,然后在你的onKeyUp方法中我会这样做:
menu.performIdentifierAction(menu.findItem(R.id.overflow_menu), 0);
其中overflow_menu是包含子菜单的项目的ID,如下所示:
<item
android:id="@+id/overflow_menu"
android:icon="?actionbar_icon_overflow"
android:showAsAction="always">
<menu>
<!-- subitems -->
</menu>
</item>