10

我一直在努力與動作條和ActionBarSherlock在過去的幾天,我填充ActionBar中的一些信息的時候遇到一些問題。的Android(ActionBarSherlock)有什麼辦法保持相同的動作條的高度都在縱向和橫向?

當應用程序在縱向模式下運行時,動作條看起來不錯,並且可以顯示所有的數據,例如:

ActionBar in portrait mode

但是當我切換應用程序顯示在景觀,一些數據被裁切:

ActionBar in landscape mode

你可以注意一下這兩個狀態圖標和電子郵件已被剪切因動作條的新高度。

在這種情況下,我想保持相同的大小爲縱向和橫向使應用程序可以看起來很好。我不能減少操作欄標題的字體大小,因爲它可能包括其他的圖標。

的方式i'm把這些圖標操作欄中的標題和副標題是利用Html.fromHtml

任何想法來解決這個問題?我正在使用ActionBarSherlock庫!

回答

23

一,可能不是太漂亮的做法,可能是覆蓋 dimens.xml的動作條的默認高度值。

E.g.在人像的默認值是:

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

與景觀:

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

有可能是做一個更清潔的方式,但我不得不承認,我知道ActionBarSherlock爲內部太少那。


編輯:細想起來,這時候本機動作條上正在使用ICS可能不會工作,因爲高度將然後解析到平臺價值?android:attr/actionBarSize。我建議您等待更好的建議,例如傑克本人。

第二個編輯: 傑克的答覆後,它看起來像所有你需要做的,使其與兩個ICS和ICS預設備ActionBarSherlock的工作是以下內容添加到您的應用程序的主題:

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

然後,您可以在相關的肖像/土地資源桶添加的實際值。

第三編輯 [感謝alvarolb]:XML實例的樣式:

<?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> 

,並在相應的活動,設置這一新的風格

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

和..它的工作原理!

+0

附和從傑克聽到的想法。這是一個有趣的問題。我剛剛在ICS上的香草GTalk應用程序中進行了測試,但沒有顯示這個文本切斷問題。 – Davek804

+0

好的方法,但是,我認爲它只適用於ICS之前的設備。在GTalk應用程序不會出現這個問題,因爲標題大小(而不是字幕)似乎比原生大小小。但正如我評論的,我不能這樣做,因爲標題還會包含其他(更大)的圖標。我會等待傑克的迴應=) –

+1

你的後續行動是正確的。在主題中只需要一個非'android'前綴的版本,所以它可以在ICS之前使用。建議您刪除頂部。 –

相關問題