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

  • Warnungen mit Proguard (mit externen Bibliotheken)
  • Um zu korrigieren AsyncTask sollte nicht die Fahne regelmäßig überprüft in doInBackground flüchtig sein?
  • Android themes - definierende Farben in benutzerdefinierten Themen
  • Android Studio kann nach Abschluss von Gradle keine Bibliotheksklassen finden
  • Warum nicht Standard-Android-Emulatoren?
  • Aktion Bar Fragment Aktivität
  • 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

  • Setzen Sie User Agent in Java httpclient und erlauben Umleitungen zu true
  • Ändern der Geschwindigkeit des Übergangs von ViewPager und setCurrentItem
  • Android Google Analytics XML-Datei
  • Android-Slide-Menü, das von beiden Seiten nach links und rechts gleitet
  • Kann diese Aktion nicht nach onSaveInstanceState auf super.onBackPressed () ausführen
  • Moto 360 Bereitstellung von Android Studio extrem langsam
  • 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.