AppCompat を使用してアプリを API7 にバックポートしていますが、アクションバーに問題があります。
アクションバーを使用FragmentActivity
すると、携帯電話(API18)にActionBarActivity
表示されますが、メニューボタンを押すとオプションメニューとして表示されます。
API7 を使用するエミュレーターでは、アクションバーは常にオプション メニューとして表示されます。
何か案は?
AppCompat を使用してアプリを API7 にバックポートしていますが、アクションバーに問題があります。
アクションバーを使用FragmentActivity
すると、携帯電話(API18)にActionBarActivity
表示されますが、メニューボタンを押すとオプションメニューとして表示されます。
API7 を使用するエミュレーターでは、アクションバーは常にオプション メニューとして表示されます。
何か案は?
次のように、メニュー項目に compat 名前空間を使用します。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/action_whatever"
android:icon="@drawable/ic_action_whatever"
android:title="@string/whatever"
compat:showAsAction="ifRoom" />
</menu>
この投稿を指す重複に関連して、showAsAction を に設定しているにもかかわらず、ボタンをオーバーフロー アイテムではなくアクション アイテムとして表示するのに問題がありましたalways
。Activity
の代わりにアクティビティを拡張することで、なんとかそれを強制することができましたActionBarActivity
。この回答によると、11 未満の API レベルをサポートする必要がない場合、これは許容されます。
...extends ActionBarActivity
:
...extends Activity
:
Doogee Valencia Y100Pro でデバッグし、「3 つの小さな四角形」のメニューが表示されませんが、MainActivity を で拡張するとandroid.support.v7.app.ActionBarActivity
、アクション バーにテキスト/アイコン メニューが表示されます。次のスクリーンショットと menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_update"
android:icon="@drawable/ic_refresh"
android:title="@string/action_update"
app:showAsAction="always"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
app:showAsAction="ifRoom"/>
</menu>