14

HoneyComb+ の ActionBar のメニュー項目の間に仕切りを表示する方法はありますか?

一部の投稿では、メニュー項目に android:showAsAction="withText" がある場合にのみ仕切りが表示されると書かれています。

テキストではなくアイコンのみを表示したい。

Action Bar Compatibility を実装することで、Pre-HoneyComb の Divider を表示することに成功しました。

この投稿で指定されているように、ActionBarSherlock を使用したくありません Android actionbar sherlok は、すべてのプロジェクトで Action Bar Compatibility から ActionBarSherlock に変更する時期になるため、ディバイダーを表示しません。

Android ソースを見たとき、以下に示すようなテキストがある場合にのみ Divider が表示されることがわかりました (ActionMenuItemView から)。

public boolean needsDividerBefore() {
    return hasText() && mItemData.getIcon() == null;
}

public boolean needsDividerAfter() {
    return hasText();
}

needsDividerBefore() が常に true を返す ActionBar の ActionMenuItemView の実装を提供できる方法はありますか

4

3 に答える 3

13

http://android-developers.blogspot.in/2011/04/customizing-action-bar.htmlの助けを借りて自分で答えを見つけましたただし、これで問題が完全に解決されるわけではありません。タイトル用の仕切りと、ホーム アイコン用の仕切りを追加します。左右のセパレーターもあります。それも調整可能です。

android:selectableItemBackground をテーマに追加しました。

<item name="android:selectableItemBackground">@drawable/action_bar_item_selector</item>

action_bar_item_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:drawable="@drawable/actionbar_compat_separator"></item>

    <item android:left="1dp" android:drawable="@drawable/actionbar_compat_item"></item>

</layer-list>

actionbar_compat_separator - セパレータは描画可能です

actionbar_compat_item は、アクション バー アイテムのセレクターです。

編集済み

私の問題に対するより良い解決策を見つけました。それはうまくいきます。

<item name="android:actionButtonStyle">@style/ActionButton</item> to my Theme

<style name="ActionButton" parent="android:style/Widget.Holo.Light.ActionButton">
        <item name="android:background">@drawable/action_bar_item_selector</item>
    </style>
于 2012-07-12T05:29:38.453 に答える
7

たとえば、既存のテーマをカスタム スタイルでオーバーライドできます。

<style name="CustomTheme" parent="android:Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar</item>
</style>

<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@color/action_bar_background</item>
    <item name="android:showDividers">beginning</item>
    <item name="android:divider">@color/action_bar_divider</item>
</style>
于 2012-09-03T11:44:41.723 に答える