2015-01-11 14 views
11

Mein min und Ziel sdk ist 21, und ich verwende nicht die Support-Bibliothek.Android Toolbar zu hoch im Querformat-Modus

Ich benutze das neue Toolbar Widget, und im Allgemeinen funktioniert es, ich habe nur einen Fehler in der Art, wie es aussieht. Die Aktionssymbole sind im Hochformat zentriert, während die Symbolleiste im Querformat höher ist und die Symbole nicht zentriert sind. Bitte werfen Sie einen Blick auf die Screenshots (Leseleitungen sind nur das Problem besser sichtbar zu machen):

  • Porträt:

portrait mode

  • Landschaft:

landscape mode

Dies kann wie nichts aussehen, aber wenn die Aktionen ausgewählt sind (wie der "Pfeil nach oben" ganz links in der Leiste), ist das Ergebnis, dass ein Streifen von einigen Pixeln darunter sichtbar ist. Ich mag nicht, wie es aussieht.

Die Aktivität verwaltet keine Konfigurationsänderungen selbst.

Dies ist mein Code:

  • styles.xml:

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    
        <style name="MyTheme" parent="android:Theme.Material.NoActionBar"> 
         <item name="android:toolbarStyle">@style/MyToolbarStyle</item> 
        </style> 
    
        <style name="MyToolbarStyle" parent="android:Widget.Toolbar"> 
         <item name="android:background">?android:attr/colorPrimary</item> 
         <item name="android:elevation">2dp</item> 
        </style> 
    
    </resources> 
    
  • XML Nutzung:

Ich habe versucht, um mit dem Android messing: minHeight Attribut, aber Einstellung auf so, sa y, 30dp hat die Icons gerade auch im Hochformat noch weiter nach oben verschoben.

fand ich dies: https://code.google.com/p/android/issues/detail?id=77874 Aber es gibt keine attr/actionBarSize ...

Wie, wenn überhaupt, kann dieses Problem behoben werden? Das Telefon, auf dem die Screenshots aufgenommen wurden, ist ein Nexus 6 (xxxhdpi), und das Icon stammt vom Google Icon Pack, und die größte Ressource ist xxhdpi. Ist das das Problem?

Update: die Problemumgehung von dem oben genannten Link funktioniert, wenn ich? Android: attr/actionBarSize. Aber, ist das der einzige Weg? Scheint ein bisschen falsch, solche Workarounds für eine neue glänzende Komponente wie diese zu benötigen, noch mehr, dass die Problemumgehung einen Attributwert für eine Komponente benötigt, die durch die neue ersetzt werden soll.

+0

Könnten Sie plz Ihre Implementierung in Java-Code zeigen? Auch ich habe nicht die Verwendung Ihres Stils gesehen? –

+0

Es gibt keinen relevanten Java-Code dafür. Der Stil wird in AndroidManifest.xml als Thema für die gesamte Anwendung festgelegt, sodass jede Symbolleiste in der App den Stil "MyToolbarStyle" verwendet. – wujek

+0

Meiner Meinung nach wird Toolbar nicht nur verwendet, wie wir ActionBar verwenden, aber es kann viel größer sein und andere Dinge im Inneren usw. anzeigen ... Classic ActionBar verkleinert sich im Querformat und bewegt so Symbole ein wenig nach oben. Wenn Sie die Symbolleiste verwenden, werden die Symbole zwar verschoben, die Größe kann jedoch festgelegt werden. Jetzt, wenn Sie eine große Symbolleiste möchten, möchten Sie wahrscheinlich nicht die Größe der Symbolleiste ändern - außerhalb Ihrer Kontrolle. Nur die Angabe "? Android: attr/actionBarSize" scheint mir ganz okay :) – Antimonit

Antwort

3

versuchen zu nutzen:

android:height="?android:attr/actionBarSize" 

für Ihre Symbolleiste.

1

diesen Stil in der Symbolleiste hinzufügen:

<item name="maxButtonHeight">?attr/actionBarSize</item> 
0

ich das gleiche Problem mit android.support.v7.widget.Toolbar hatte.

Meine Lösung:

Setzen Sie Ihre Symbolleiste in eine RelativeLayout mit der Höhe, die Sie für Ihre Symbolleiste möchten. Setzen Sie Ihre Symbolleisten layout_height auf "wrap_content" und richten Sie sie an der vertikalen Mitte aus. Ich hoffe, es hilft.