2012-09-21 7 views
5

Ich habe ein breites Anwendungsmenü, das nicht immer angezeigt wird. Speziell mein Problem ist, dass wenn ich die Ziel-SDK-Version auf 16 für Geräte ohne Hardware-Menü-Taste eingestellt habe Die 3 Punkte (Aktionsleiste?), Die eigentlich erscheinen sollten, nicht.Das Menü der Android-Aktionsleiste wird nicht angezeigt, wenn die Ziel-SDK-Version größer als 10 ist. Warum?

Ich habe folgendes Manifest Einträge

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10" /> 

In einem AVD Emulator ohne Hardware-Tasten wir die drei Punkte für die Aktionsleiste Menü siehe

Aber wenn ich das Ziel gesetzt, bis 16

Keine Aktionsleiste erscheint

Ich habe Stile in verschiedenen Ressourcenordner - Werte, Werte-v11 und Werte-v14

und insbesondere in Werte-v14 habe ich eine Datei, die styles.xml

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" /> 

Das Manifest Eintrag heißt es in dem Thema zu setzen, ist

<application android:label="@string/app_name" 
android:name="uk.co.pjadult.mobile.adult_reader_lib.BookLib" 
android:icon="@drawable/ic_launcher" 
android:theme="@style/AppTheme"> 

Ich frage mich, ob ich Ressourcenordner mit Stilen für alle SDK-Versionen einrichten muss?

ich ratlos bin, was der richtige Ansatz sein sollte, um in der Lage sein Android zu setzen: targetSdkVersion = „16“ und der Aktionsleiste haben (3 Punkte) Menü erscheinen

UPDATE Ich verwende jetzt ActionBarSherlock ohne Probleme

+0

http://developer.android.com/guide/topics/ui/actionbar.html –

+0

@RajeshRajaram Das beantwortet meine Frage nicht. Danke trotzdem – jamesc

+0

Aktionsleisten werden als Ersatz in Honeycomb oder höher verwendet, wie sie auf Android offiziellen Website sagen; also warum bekommst du es nicht vielleicht –

Antwort

5

Siehe den Link @ Mr.S zur Verfügung gestellt, Android missing MENU button, für etwas mehr über das Problem.

Aber Ihre Fragen zu beantworten:

frage ich mich doch, wenn ich Ressource Ordner mit Stilen einrichten müssen für ALLE sdk Versionen?

Nein. Es wird die höchste verfügbare API nehmen.Zum Beispiel, wenn Sie: verwenden würden

  • values.xml
  • values-v11.xml
  • values-v16.xml

Das folgende Beispiel Android OS API-Ebene:

  • API 4: values.xml
  • API 1 0: values.xml
  • API 11: values-v11.xml
  • API 13: values-v11.xml
  • API 16: values-v16.xml

Und so weiter.

ich ratlos bin, was der richtige Ansatz, um der Lage sein Android sein sollte eingestellt werden: targetSdkVersion = „16“ und der Aktionsleiste haben (3 Punkte) Menü erscheinen

Wenn die Aktivität Vollbild ist, werden alle API-Ebenen (Min. Oder Ziel) über 10 die Punkte verschwinden lassen. Der einzige Weg, um dies zu erreichen, besteht darin, ein eigenes Menüsystem zu schreiben oder eine Shim-Bibliothek wie ActionBarSherlock zu verwenden.

Wenn die Aktivität normalerweise eine Titelleiste hat, Sie aber die API-Ebene über 10 setzen möchten, müssen Sie den Code Holo.Theme für die Aktivität festlegen. Sehen Sie dieses Holo Everywhere blogpost und Android theme, fullscreen and the action bar für wie man das macht.

UPDATE: Beachten Sie, dass neuere Android-Hardware-Richtlinien keine Hardware-Menüschaltfläche erfordern. Und dieser Hack funktioniert nur für Geräte, die weiche Tasten verwenden (wie das Nexus 7). Für Geräte, die keines bieten (wie zum Beispiel viele HTC-Geräte), wird es für den Benutzer keine Möglichkeit geben, zum Menü zu gelangen - selbst mit diesem Hack. Es ist hoch empfohlen, auf das Action-Bar-Konzept zu wechseln.

+0

Bedenken Sie auch, dass neuere Geräte oft nur mit Hardware-Tasten und ohne Menü-Taste ausgestattet sind. Daher ist die Menüfunktion auch mit diesem Hack nicht zugänglich. Es wird dringend empfohlen, zu einer Aktionsleiste zu wechseln. –

+0

Oh !, Es tut mir wirklich leid, aber wegen solcher Dinge "liebe" ich Android ... Action-Bar ist in Ordnung. Aber wenn ich auf Vollbild umstelle! Überlaufmenü ist nicht mehr zugänglich. (Ich habe ein neueres Gerät ohne HW-Menü-Taste). Solution Third-Party-Bars ist ein Schritt zurück, wenn wir ActionBars in Android implementiert haben (!?) – Peter