web-dev-qa-db-ja.com

AppCompatでアクションバーが表示されない

AppCompatを使用してAPI7にアプリをバックポートしていますが、アクションバーに問題があります。

FragmentActivityを使用すると、携帯電話(API18)にアクションバーが表示されますが、ActionBarActivityを使用すると、メニューボタンを押すとオプションメニューとして表示されます。

API7を使用するエミュレーターでは、アクションバーは常にオプションメニューとして表示されます。

何か案は?

33
electrofant

次のように、メニュー項目に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>
70
flx

この投稿を指す複製 に関連して、showAsActionがalwaysに設定されているにもかかわらず、ボタンがオーバーフロー項目ではなくアクション項目として表示されるのに問題がありました。 Activityの代わりにActionBarActivityを使用してアクティビティを拡張することで、なんとか強制しました。 この回答 によると、11未満のapiレベルをサポートする必要がない場合、これは受け入れられます。

...extends ActionBarActivity

extends ActionBarActivity

...extends Activity

enter image description here

6
adamdport

Doogee Valencia Y100Proを使用してデバッグし、メニューが「3つの小さな正方形」として表示されませんが、MainActivityをAndroid.support.v7.app.ActionBarActivity、その後、アクションバーでテキスト/アイコンメニューを取得します。次 screenshot および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>
0
Ivan Osipov