我是android世界的新手。到目前为止,每个“OptionsMenu”都可以像这样创建:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_list_view_controller, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menu_settings:
startActivity(new Intent (ListViewControllerActivity.this, PreverencesActivity.class));
return true;
case R.id.menu_devsettings:
startActivity(new Intent (ListViewControllerActivity.this, DevPreferencesActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
但是现在,例如,新的htc没有硬件OptionsMenu按钮。当OptionsMenu像我的源一样实现时,显示器内的menubutton将不会显示。 如何实现OptionsMenu权限,布局中不需要额外的按钮? 或者显示器内的这个按钮能以某种方式被激活吗?
修改 我想我给出了一些解决问题的信息,因为android不会在API 16 Jelly Bean中处理它。 再说一遍。我已经实现了如上所述的选项菜单。但是现在使用没有硬件选项菜单按钮的“htc one”,屏幕上的选项菜单按钮就不显示了。
这是我的布局xml,我正在使用它(可能是布局问题):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/img_logo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/txt_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:background="#1e4870"
android:textColor="#ffffff"
android:layout_below="@+id/img_logo"/>
<ListView
android:id="@android:id/list"
android:layout_below="@+id/txt_title"
android:layout_above="@+id/img_bottom_bar"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
<ImageView
android:id="@+id/img_bottom_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/footer"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:background="@android:drawable/bottom_bar"
android:src="@android:drawable/bottom_bar" />
<RelativeLayout
android:id="@+id/footer"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:orientation="vertical" >
<TextView
android:id="@+id/footer_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/footer_img_bs"
android:textAppearance="?android:attr/textAppearanceSmall" />
<ImageView
android:id="@+id/footer_img_bs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
</RelativeLayout>
这里是清单的一部分,我认为可以解决这个问题:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
我也多次用谷歌搜索过这个问题。但似乎我是这里唯一有这个问题的人。所以我必须有点愚蠢或什么的。
在我忘记之前:感谢WebnetMobile.com试图帮助我。可能是因为我(就像我以前说的那样)太愚蠢而无法理解你的答案。
答案 0 :(得分:2)
我已经解决了this链接描述的问题。您只需将“targetSdkVersion”从16更改为10。
答案 1 :(得分:1)
您正在谈论选项菜单,而不是上下文菜单(上下文菜单是您长按列表视图项目时)。如果设备有菜单按钮,你不应该打扰。 Android将为您处理它,如果您的应用程序将运行,即Honeycomb和永远不会版本的android(下拉菜单按钮),但您的应用程序将需要它,Android将显示屏幕菜单按钮
答案 2 :(得分:0)
在选项菜单
的情况下切换到3.0 +中的操作栏 <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings"
android:orderInCategory="100"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|withText"/>
</menu>
使用类似菜单的xml来实现兼容性 以便在3.1-点击菜单按钮时显示 同时支持上层经文 进一步的细节reffer android开发者网站 http://developer.android.com/guide/topics/ui/actionbar.html