Java 如何使用actionbarsherlock创建自定义下拉菜单?
所以,我试着模仿潘多拉的菜单: 在您可以选择点击右上角的菜单按钮或图标的地方,无论哪种方式,都会显示相同的下拉菜单列表。我曾尝试创建一个“溢出”菜单,但在旧设备上,我发现该菜单仍然显示在底部(我不想要)。因此,我创建了一个Java 如何使用actionbarsherlock创建自定义下拉菜单?,java,android,menu,android-actionbar,actionbarsherlock,Java,Android,Menu,Android Actionbar,Actionbarsherlock,所以,我试着模仿潘多拉的菜单: 在您可以选择点击右上角的菜单按钮或图标的地方,无论哪种方式,都会显示相同的下拉菜单列表。我曾尝试创建一个“溢出”菜单,但在旧设备上,我发现该菜单仍然显示在底部(我不想要)。因此,我创建了一个微调器,并使用: getSupportActionBar().setNavigationMode(getSupportActionBar().NAVIGATION_MODE_LIST); 这种方法的问题在于,它显示的是一个项目的名称而不是图标(我假设我必须提供一个没有问题的
微调器,并使用:
getSupportActionBar().setNavigationMode(getSupportActionBar().NAVIGATION_MODE_LIST);
这种方法的问题在于,它显示的是一个项目的名称而不是图标(我假设我必须提供一个没有问题的图标),而微调器显示的更靠近中间(我希望它一直向右)
总之,有没有一种方法可以创建一个菜单,类似潘多拉的菜单,在操作栏的最右侧显示一个图标,并通过按下图标或菜单按钮打开?任何建议、提示或帮助都将不胜感激,谢谢 如果我明白了,您希望创建一个弹出菜单,并在用户单击某个硬件按钮上的图标时显示它们
这是对弹出菜单的一个很好的解释,如果您想获得一些设备键,请尝试以下方法:
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
Toast.makeText(this, "The Center key was pressed",
Toast.LENGTH_SHORT).show();
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
Toast.makeText(this, "The Right key was pressed",
Toast.LENGTH_SHORT).show();
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
Toast.makeText(this, "The Left key was pressed", Toast.LENGTH_SHORT)
.show();
return true;
case KeyEvent.KEYCODE_BACK:
Toast.makeText(this, "The Back key was pressed", Toast.LENGTH_SHORT)
.show();
//---this event has been handled---
return true;
}
//---this event has not been handled---
return false;
}
我希望这会对你有所帮助。通过一些实验,我成功地实现了我想要实现的部分目标。我不确定这是否是最好的方法,但确实有效
<>我发现,旋转器不会显示在屏幕最右边的原因是,这个空间是为菜单项保留的。如果您还记得的话,我没有使用菜单项的最初原因是,在旧设备上,当您点击菜单按钮时,它会在屏幕底部显示菜单项(不是我想要的)。但我找到了一份工作
我首先用XML创建菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/spinner_menu_item"
android:showAsAction="always"
android:actionLayout="@layout/spinner" />
</menu>
然后在OnCreateOptions菜单中:
getSupportMenuInflater().inflate(R.menu.basic_menu, menu);
MenuItem item = menu.findItem(R.id.spinner_menu_item);
spinnerMenu = (IcsSpinner)item.getActionView();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyActivity.this, android.R.layout.simple_dropdown_item_1line, menuItems);
spinnerMenu.setAdapter(adapter);
spinnerMenu.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener() {}
唯一做不到的是显示图标而不是文字。但是到了一半!我希望这将有助于面临类似问题的人。是的,没错,我刚刚发现了这一点,并公布了我的答案。我现在面临的唯一问题是显示图标而不是文本。谢谢可以创建自己的下拉样式并设置为特性样式。
getSupportMenuInflater().inflate(R.menu.basic_menu, menu);
MenuItem item = menu.findItem(R.id.spinner_menu_item);
spinnerMenu = (IcsSpinner)item.getActionView();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyActivity.this, android.R.layout.simple_dropdown_item_1line, menuItems);
spinnerMenu.setAdapter(adapter);
spinnerMenu.setOnItemSelectedListener(new IcsAdapterView.OnItemSelectedListener() {}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_MENU){
spinnerMenu.performClick();
return true;
}
return super.onKeyDown(keyCode, event);
}