Action bar Verhalten bei android: targetSdkVersion ist 16

Ich versuche, eine Aktionsleiste mit Tabs als Navigationsoptionen zu implementieren. Um dies zu tun, wähle ich die Option "Tabs + Swipe" im Abschnitt "Neue Leere Aktivität" des Assistenten "Neue Android App" wie unten gezeigt aus.

Tab + Wischen-Assistent

  • Wie kann ich sehen, lange Layout in Vorschau in Android Studio
  • Android.os.BadParcelableException: ClassNotFoundException beim Unmarshalling: com.facebook.flatbuffers.helpers.FlatBufferModelHelper $ LazyHolder
  • Fehler kompilieren in "Use Facebook Login" SDK
  • WebView-Steuerelement mit Fokus blockiert Media-Button-Ereignisse in Android 5
  • Wie kann man die Bildschirmauflösung in "DP" erzählen?
  • Kann nicht mit der Vorwürfe schrumpfen
  • Nun, in der Android Manifest, wann

    android:targetSdkVersion="15" 

    Das ist der Standardwert, die Aktionsleiste sieht so auf einem Nexus 7 / Nexus 7 Emulator aus, das ist der gewünschte Look der App

    Standardverhalten

    Jetzt, wenn ich diese Zeile in der Android Manifest zu ändern

     android:targetSdkVersion="16" 

    Das Aussehen der Aktionsleiste ändert sich dazu

    Verhalten nach Android: targetSdkVersion = "16"

    Der Standard-Look bleibt für jede Version von Android, aber 16, kann jemand bitte erklären, warum das Aussehen der Action-Bar plötzlich ändert sich, wenn die targetSdkVersion auf 16 gesetzt ist?

    Das oben genannte ist im emulator ebenso wie in einem echten nexus 7 reproduzierbar.

    Vollständige Screengrabs für

    Normal: http://i.stack.imgur.com/VsBA2.png

    Nach android: targetSdkVersion = "16": http://i.stack.imgur.com/OM6Y4.png

    Update-10th March, 2013: Umschalten auf den Listen-Navigationsmodus (anstelle von Tabs), um die Verschiebung zu Android zu ermöglichen: targetSdkVersion = 17

  • Android-Verbindung zu WiFi ohne menschliche Interaktion
  • Lesen / Schreiben in NFC-Tag mit Passwortschutz
  • Wegbeschreibung mit Androids Google Maps API finden
  • Finden Sie Android Bluetooth LE GATT Profile
  • Filtern von Ressourcen aus dem Play Services Monolith, um Ihre APK kleiner zu machen
  • Wie man HTTP-POST-Anfrage sendet und Antwort empfängt?
  • One Solution collect form web for “Action bar Verhalten bei android: targetSdkVersion ist 16”

    Der Grund, den es bei der Einstellung von targetSDK auf 16 ändert, ist, weil Google geändert hat, wie Tabs in Jelly Bean gemessen werden. Genauer gesagt, schau dir das in android.internal.view.ActionBarPolicy :

     public boolean hasEmbeddedTabs() { final int targetSdk = mContext.getApplicationInfo().targetSdkVersion; if (targetSdk >= Build.VERSION_CODES.JELLY_BEAN) { return mContext.getResources().getBoolean(R.bool.action_bar_embed_tabs); } // The embedded tabs policy changed in Jellybean; give older apps the old policy // so they get what they expect. return mContext.getResources().getBoolean(R.bool.action_bar_embed_tabs_pre_jb); } 

    Allerdings vermute ich, dass du nicht nur den Grund willst, sondern eine Lösung. Leider kann ich Ihnen nicht einen einfachen Weg geben, um es nur eingebettet zu setzen.

    Ich kann vorschlagen, mit ActionBarSherlock , um es konsistent zu machen. Der Bonus dazu ist die Möglichkeit, Actionbars auf älteren Geräten zu verwenden. Bei der Verwendung (Portrait) kann ich bestätigen, dass, wenn du das targetSDK auf 16 setzt, das gestapelte Layout auf Jelly Bean, Ice Cream Sandwich, GingerBread und Froyo verwendet. Zumindest werden Sie in der Lage sein, Ihr Layout zu entwerfen, während Sie wissen, was zu erwarten ist.

    Denken Sie daran, dass in den meisten Fällen die Umstellung auf den Landschaftsmodus sie wieder in die Aktionsleiste einbetten wird, da es "genügend Raum" gibt, wie es misst.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.