3

主にスマートフォンを対象としたAndroidアプリを開発しました。ただし、タブレット エミュレーターでは、Android 3.x でも動作することがわかります。

ただし、小さな問題が 1 つあります。ユーザーがメニュー ボタンをクリックしても、OptionsMenu を開くことができません。スマートフォンではご存じのように下からメニューが出てきます。しかし、タブレットでは何も起こりません。

このhttp://developer.android.com/guide/topics/ui/menus.html#options-menuを読みましたが、これを管理する方法がわかりません。アプリにカスタム アクション バーがあります。

私のコードは非常に簡単です。主な活動:

@Override
public boolean onCreateOptionsMenu(Menu men) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.menu, men);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    //...
    }
}

そして prefs アクティビティ:

public class MdPrefsActivity extends PreferenceActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         getPreferenceManager().setSharedPreferencesName(
                 MdSharedPrefs.PREFS_NAME);
         addPreferencesFromResource(R.xml.prefs);
     }
}

MdSharedPrefs クラスには、優先値を取得/書き込むためのいくつかのゲッターとセッターが含まれています。

タブレットで OptionsMenu を表示する方法はありますか?

4

2 に答える 2

4

ドキュメントが言ったように:

オプション メニューの項目には、メニュー ボタンまたはアクション バー (Android 3.0 以降を実行しているデバイス) の 2 つの異なる方法でアクセスできます。

[...]

Android 3.0 以降では、オプション メニューの項目はアクション バーに配置され、従来のタイトル バーの代わりにアクティビティの上部に表示されます。デフォルトでは、オプション メニューのすべての項目はオーバーフロー メニューに配置され、ユーザーはアクション バーの右側にあるメニュー アイコンをタッチして開くことができます。ただし、すぐにアクセスできるように、選択したメニュー項目を「アクション項目」としてアクション バーに直接配置することができます [...]

そのため、Android 3.0 以降では、 のメニュー項目のみが表示されますActionBar

次の点に注意することも重要です。

Android 3.0 (API レベル 11) 以降、アクション バーは Theme.Holo テーマ (またはその子孫の 1 つ) を使用するすべてのアクティビティに含まれています。これは、targetSdkVersion または minSdkVersion 属性が "11 」以上。

ただし、のActionBarように明示的に非表示にするアプリケーションまたはアクティビティのテーマがない場合にのみ表示されることに注意してください。

android:theme="@android:style/Theme.Holo.NoActionBar"
于 2012-01-12T20:42:32.463 に答える
0

タブレットでは、メニューをロードするために使用できるハードウェア ボタンがないため、res に 2 つのフォルダーを作成する必要があります。これらのフォルダー内に、より高いバージョンのデバイスが使用されるたびに値フォルダー内のデフォルトの基本テーマを置き換えるこれらのスタイル (styles.xml) を配置します。

解像度/値-11

<!--
    Base application theme for API 11+. This theme completely replaces
    AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
    <!-- API 11 theme customizations can go here. -->
</style>

解像度/値-14

<!--
    Base application theme for API 14+. This theme completely replaces
    AppBaseTheme from BOTH res/values/styles.xml and
    res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <!-- API 14 theme customizations can go here. -->
</style>

于 2013-10-27T12:54:44.840 に答える