0

ここにあるコードを適応させることにより、ActionBarSherlockを使用してアクションバーにキャンセル/完了レイアウトを実装しようとしています。

すべてがICSまたはJellyBean(ABSがネイティブActionBarを使用する場合)で意図したとおりに機能します。Gingerbread(API 10)でテストする場合、ボタンの間に仕切りが表示されないことを除いて、すべてが正常に機能します。

ジンジャーブレッド-行方不明-仕切り

私は最初、これは仕切りの画像の問題だと思いましたが、次のようなコードを使用している場合でも:

android:divider="#f00"

ジンジャーブレッドには仕切りは表示されませんが、予想どおり、ICS/JBには明るい赤の仕切りが表示されます。どうやらActionBarSherlock3.5+は仕切りの外観にネイティブの動作を使用しているようですが、ABSを使用すると仕切りが表示されないのに、ネイティブのActionBarを使用すると仕切りが表示されるのはなぜですか?

これが私のXMLです:

actionbar_custom_view_done_discard.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="?attr/dividerVertical"
    android:dividerPadding="12dp"
    android:orientation="horizontal"
    android:showDividers="middle" >

    <include layout="@layout/actionbar_cancel_button" />

    <include layout="@layout/actionbar_done_button" />

</LinearLayout>

actionbar_cancel_button.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/actionbar_cancel"
    style="?actionButtonStyle"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@drawable/abs__item_background_holo_light" >

    <TextView
        style="?actionBarTabTextStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:drawableLeft="@drawable/ic_action_cancel"
        android:drawablePadding="8dp"
        android:gravity="center_vertical"
        android:paddingRight="20dp"
        android:text="@string/action_cancel" />

</FrameLayout>

actionbar_done_button.xmlは上記とまったく同じですが、名前、テキスト、アイコンが変更されています。

前もって感謝します。

4

2 に答える 2

6

の仕切りLinearLayoutは API 11+ です。これは ActionBarSherlock とは関係ありません。

これを回避するには、2 つの要素の間に背景を持つ 1 dp ビューを追加するだけです。

于 2013-03-17T20:48:09.203 に答える
1

これは、カスタムActionBarレイアウトの最適な実装であることがわかったものです。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<include layout="@layout/actionbar_cancel_button" />

<!-- View below is used because the android:divider attribute only works on API 11+. This is identical in appearance to that. -->

<View
    style="@style/Widget.Sherlock.Light.ActionButton"
    android:layout_width="1dp"
    android:layout_height="match_parent"
    android:layout_marginBottom="12dp"
    android:layout_marginTop="12dp"
    android:background="@drawable/abs__list_divider_holo_light" />

<include layout="@layout/actionbar_done_button" />

于 2013-03-18T12:47:21.247 に答える