0

我正在尝试通过调整此处找到的代码,使用 ActionBarSherlock 在我的操作栏中实现取消/完成布局。

在 ICS 或 Jelly Bean(ABS 将使用本机 ActionBar)上,一切都按预期工作。在 Gingerbread (API 10) 上进行测试时,一切正常,只是按钮之间没有出现分隔线:

姜饼缺失分频器

我起初认为这是分隔线图像的问题,但即使使用如下代码:

android:divider="#f00"

Gingerbread 上没有出现分隔线,但正如预期的那样,在 ICS/JB 上出现了一个鲜红色的分隔线。显然 ActionBarSherlock 3.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 无关。

您可以简单地在两个元素之间添加一个带有背景的 1dp 视图来解决这个问题。

于 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 回答