10

Ich habe mit den ActionBar und ActionBarSherlock für die letzten paar Tage gearbeitet, und ich habe einige Probleme beim Ausfüllen einiger Informationen in der ActionBar.Android (ActionBarSherlock) Gibt es eine Möglichkeit, die Höhe der ActionBar im Hoch- und Querformat beizubehalten?

Wenn die Anwendung läuft im Portrait-Modus sieht das ActionBar in Ordnung, und alle können die Daten angezeigt werden, zum Beispiel:

ActionBar in portrait mode

Aber wenn ich die App wechseln in Landschaft angezeigt werden, einige der Daten wird abgeschnitten:

ActionBar in landscape mode

Sie feststellen können, wie sowohl das Statussymbol und die E-Mail hat sich durch die neue Höhe des ActionBar abgeschnitten worden.

In diesem Fall möchte ich die gleiche Größe für Hoch- und Querformat beibehalten, damit die App gut aussehen kann. Ich kann die Schriftgröße des Aktionsleistentitels nicht reduzieren, da er andere Symbole enthalten kann.

Die Art und Weise bin ich diese Symbole in der Aktionsleiste Titel und Untertitel setzen, ist die Verwendung Html.fromHtml

Irgendwelche Ideen, dieses Problem zu lösen? Ich benutze die ActionBarSherlock-Bibliothek!

Antwort

23

Ein, wahrscheinlich nicht allzu schöner Ansatz, könnte sein, die Standardwerte für die Höhe der ActionBar in dimens.xml zu überschreiben.

z. der Standardwert im Hochformat ist:

<dimen name="abs__action_bar_default_height">48dip</dimen> 

Und in der Landschaft:

<dimen name="abs__action_bar_default_height">40dip</dimen> 

Es könnte ein sauberer Weg, es zu tun, aber ich habe ich über die Interna von ActionBarSherlock zu wenig zugeben kennen Das.


Edit: Kommen Sie, daran zu denken, dies wird wahrscheinlich nicht funktionieren, wenn das native ActionBar auf ICS verwendet wird, da die Höhe wird dann auf die Plattform Wert in ?android:attr/actionBarSize lösen. Ich würde Ihnen empfehlen, auf einen besseren Vorschlag zu warten, z. von Jake selbst.

Zweite edit: Nach Jakes Antwort es wie alles, was Sie tun müssen, so scheint es, beide mit ActionBarSherlock machen arbeiten auf ICS und Pre-ICS-Geräte Folgendes App-Thema ist hinzuzufügen:

<item name="actionBarSize">@dimen/some_value</item> 
<item name="android:actionBarSize">@dimen/some_value</item> 

Sie können dann die tatsächlichen Werte in den entsprechenden Hochformat-/Landressourcen-Buckets hinzufügen.

Dritten bearbeiten [Dank alvarolb]: XML-Beispiel für den Stil:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar"> 
     <item name="actionBarSize">48dip</item> 
     <item name="android:actionBarSize">48dip</item> 
    </style> 
</resources> 

Und in der entsprechenden Tätigkeit, setzen Sie diese neue Art

android:theme="@style/Theme.Styled" 

und .. es funktioniert !

+0

Abgestimmt die Idee, von Jake zu hören. Das ist ein interessantes Thema. Ich habe gerade in der Vanille-GTalk-App auf ICS getestet, es zeigt dieses Textabschneide-Problem nicht. – Davek804

+0

Guter Ansatz, aber ja, ich denke, dass es nur für Pre-ICS-Geräte funktioniert. In der GTalk-App erscheint dieses Problem nicht, da die Titelgröße (kein Untertitel) kleiner zu sein scheint als die native Größe. Aber wie gesagt, ich kann das nicht machen, weil der Titel auch andere (größere) Icons enthalten wird. Ich werde auf die Antwort des Jake warten =) –

+1

Ihre Follow-up ist korrekt. Brauchen nur eine nicht-'android'-prefixed Version im Thema, so dass es auf Pre-ICS funktioniert. Ich empfehle Ihnen, den oberen Abschnitt zu streichen. –

Verwandte Themen