2

我是安卓世界的新手。到目前为止,每个“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 像我的源代码一样实现时,显示屏内的菜单按钮将不会显示。如何实现 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 试图帮助我。可能是我(就像我之前说过的那样)太愚蠢了,无法理解您的答案。

4

3 回答 3

2

我已经解决了这个链接描述的问题。您可以简单地将“targetSdkVersion”从 16 更改为 10。

于 2012-09-13T09:24:23.390 回答
1

您在谈论选项菜单,而不是上下文菜单(上下文菜单是当您长按列表视图项时)。如果设备有菜单按钮,你不会打扰。Android 会为您处理好它,如果您的应用程序将在 ie Honeycomb 上运行并且从不使用 android 版本(删除菜单按钮),但您的应用程序需要它,Android 将在屏幕上显示菜单按钮

于 2012-08-27T11:59:26.233 回答
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 中单击菜单按钮时显示它,同时支持更高版本以获取更多详细信息,请参阅 android 开发人员网站 http://developer.android.com/guide/topics/ui/actionbar .html

于 2012-08-27T12:00:59.467 回答