2014-01-13 12 views
7

Ich versuche, Googles LinkeNavBarLibrary in meine Anwendung zu integrieren. Wenn ich die Navigationsleiste lade, lande ich am oberen Rand der Aktivität mit einem schwarzen Balken. Die Leiste scheint den Platz zu belegen, den eine traditionelle Aktionsleiste einnehmen würde.LeftNavBar erstellt schwarzen Balken am Anfang der Aktivität

Weiß jemand woher die Leiste kommt oder wie sie entfernt wird.

Danke.

enter image description here

Meine Anwendung Thema ist leicht angepasst. Basierend auf dem AppCompat Thema aufgrund Anforderungen des MediaRouteActionProvider

styles.xml

<resources> 
    <style name="AppTheme" parent="@style/Theme.AppCompat"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> 
     <item name="android:background">@drawable/ab_gradient</item> 
    </style> 
</resources> 

Die Aktivität im Bild oben hat ein eigenes Thema im Manifest definiert.

AndroidManifest.xml

<activity 
    android:name="my.app.namespace.CoreActivity" 
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > 
</activity> 

Die Anwendungen Mindest sdk-Version ist 14, es ist also nicht ausschließlich eine Google TV App. Ich konnte diesen Fehler nur auf meinen Android 4.1- und 4.4-Geräten testen.

+0

Warum erweitern Sie Theme.AppCompat, wenn Ihre App auf API> 14 ausgerichtet ist? Haben Sie versucht, eine Werte-14 zu erstellen und dort eine Ressourcendatei einzufügen, die Ihr App-Thema von Holo aus erweitert? – Imanol

+0

Wenn Sie versuchen, eine linke Navigationsleiste wie in Google Mail oder G + zu implementieren, sollten Sie DrawerLayout aus der Support-Bibliothek verwenden. Siehe http://developer.android.com/training/implementing-navigation/nav-drawer.html – alanv

+0

Um beide Fragen zu beantworten. Ich richte mich auf das appcompat-Thema aus, denn von dem, was ich sagen kann, benötigt der chromecast mediarouteactionprovider die appcompat-Bibliotheken.Die Navigationsleiste ist eine versteckte Benutzeroberfläche, die mit einer d-pad-gesteuerten Schnittstelle nicht leicht zu erreichen ist. Aus diesem Grund habe ich mich entschieden, googles lefthandnav library zu verwenden, da es auf die Art von Navigation zugeschnitten ist, die TV-Benutzer erwarten. – Redshirt

Antwort

2

Ich beschäftige mich mit der Aktionsleiste auf diese Weise:

getActionBar().hide(); 

Versuchen Sie dies in Ihrer Haupttätigkeit oder die Aktivität zu setzen, die die Eltern ist und immer präsent. Kümmern Sie sich nicht um das Thema in Manifest, legen Sie einfach Ihr Thema mit der Titelleiste fest und verstecken Sie es durch den Code.

Hoffe, das hilft.

1

Werfen Sie einen Blick auf: Hide the Status Bar on Android 4.0 and Lower

Beachten Sie, dass dies in der <application>-Tag ist. Das könnte dir helfen.

<application 
    ... 
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > 
    ... 
</application> 

oder programmatisch:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // If the Android version is lower than Jellybean, use this call to hide 
     // the status bar. 
     if (Build.VERSION.SDK_INT < 16) { 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } 
     setContentView(R.layout.activity_main); 
    } 
0

Sie können Android gesetzt: windowActionBar Stil auf false durch eigenes Thema zu setzen. Hinweis: In diesem Fall gibt getActionBar() null zurück. Wenn Sie die Aktionsleiste mithilfe eines Designs entfernen, lässt das Fenster die Aktionsleiste überhaupt nicht zu.

0

Danke für die Antworten Jungs. Das eigentliche Problem war, dass die LeftNavBar.java-Klasse einen künstlichen Rand oben auf dem Bildschirm erzeugte. Ich hätte gedacht, dass eine von Google veröffentlichte Bibliothek besser wäre, aber anscheinend nicht.

Verwandte Themen