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

1

コンテキストメニューではなく、オプションメニューについて話している(コンテキストメニューは、リストビューアイテムを長押ししたときです)。デバイスにメニューボタンがあるかどうか気にする必要はありません。Androidがそれを処理します。アプリが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 に答える