10

ここ数日間、ActionBar と ActionBarSherlock を使用していますが、ActionBar に情報を入力する際に​​問題が発生しています。

アプリケーションが縦向きモードで実行されている場合、ActionBar は問題なく表示され、すべてのデータを表示できます。次に例を示します。

縦向きモードの ActionBar

しかし、アプリを横向きに表示するように切り替えると、データの一部が切り取られます:

横向きモードの ActionBar

ActionBar の新しい高さにより、ステータス アイコンと電子メールの両方がトリミングされていることがわかります。

この場合、アプリがきれいに見えるように、縦向きと横向きで同じサイズを維持したいと考えています。アクションバーのタイトルには他のアイコンが含まれている可能性があるため、フォントサイズを小さくすることはできません。

これらのアイコンをアクション バーのタイトルとサブタイトルに配置する方法は、Html.fromHtml を使用することです。

この問題を解決するためのアイデアはありますか? 私は ActionBarSherlock ライブラリを使用しています!

4

1 に答える 1

23

おそらくあまりきれいではないアプローチの 1 つは、ActionBar のデフォルトの高さの値をオーバーライドすることですdimens.xml

たとえば、縦向きのデフォルト値は次のとおりです。

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

そして風景の中:

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

もっとクリーンな方法があるかもしれませんが、そのためには ActionBarSherlock の内部構造についてほとんど知らないことを認めざるを得ません。


編集:考えてみると、高さは のプラットフォーム値に解決されるため、ネイティブ ActionBar が ICS で使用されている場合、これはおそらく機能しません?android:attr/actionBarSize。ジェイク自身などからのより良い提案を待つことをお勧めします。

2 番目の編集: Jake の返信の後、ICS デバイスと ICS 以前のデバイスの両方で ActionBarSherlock を使用するために必要なことは、アプリのテーマに次のコードを追加することだけです。

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

その後、関連するポートレート/ランド リソース バケットに実際の値を追加できます。

3 番目の編集[ 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"

そして..それは動作します!

于 2012-06-05T01:14:42.397 に答える