通过一些实验,我设法得到了我想要完成的部分。我不确定这是否是最好的方法,但它确实有效。
我发现微调器不显示在屏幕最右侧的原因是因为该空间是为菜单项保留的。如果你还记得,我没有使用菜单项目的原因是因为在较早的设备上,当你点击菜单按钮时,它会显示屏幕底部的项目(不是我想要的)。但我找到了一个工作。
我首先创建我的菜单中的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>
和"@layout/spinner"
:
<?xml version="1.0" encoding="utf-8"?>
<com.actionbarsherlock.internal.widget.IcsSpinner xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinner_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
然后在onCreateOptionsMenu:
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() {}
最后我overrided菜单按钮,像所以:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_MENU){
spinnerMenu.performClick();
return true;
}
return super.onKeyDown(keyCode, event);
}
这个不做的唯一的事情就是显示一个图标而不是单词。但在那里的一半!我希望这会帮助有人遇到类似的问题。
是的,这是正确的,我想了一下,并发布了我的答案。我现在面临的唯一问题是显示一个图标而不是文本。谢谢! – chRyNaN
你可以制作你自己的下拉风格,并设置为属性** Style **。 –