2

我正在尝试显示一个带有两个项目的操作栏,取消和保存,但我希望这些布局跨越操作栏的整个长度,如下所示:

______________________________
|____Cancel____|____Save ____|
|                            |
|                            |
|                            |
|                            |

所以基本上我需要一种方法来只显示两个操作项,居中并跨越整个操作栏。

实现这一目标的最简单方法是什么?我正在考虑使用自定义布局,但由于我对使用操作栏和菜单还很陌生,所以我不确定如何才能做到这一点并且让这些仍然是菜单操作项。

有没有某种造型解决方案?完成此任务的最佳和最轻松的方法是什么?

编辑

因为这是我第一次使用操作栏和自定义布局,所以我不知道什么会起作用,什么是完全行不通的愚蠢方法。例如,将自定义布局设置为此:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_gravity="center_horizontal">

    <item android:id="@+id/menu_item_cancel"
            android:showAsAction="always"
            android:title="Cancel"/>

    <item android:id="@+id/menu_item_save"
            android:showAsAction="always"
            android:title="Save" />
</menu>

导致通货膨胀异常并且不起作用,尽管其他有更多经验的人会立即知道这行不通,但在我能感觉到自己的出路或有人指出正确的方向之前,我一直在浪费时间.

因此,对于那些问我尝试过什么的人,我会继续发帖,但期待很多。

第二次尝试

获取 ClassNotFoundException:在路径上找不到类“android.view.menu”

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal">

    <menu android:layout_gravity="center_horizontal">

        <item android:id="@+id/menu_item_cancel"
                android:showAsAction="always"
                android:title="Cancel"/>

        <item android:id="@+id/menu_item_save"
                android:showAsAction="always"
                android:title="Save" />
    </menu>

</LinearLayout>

第三次尝试

这几乎可以工作,除了我只看到每个按钮的上半部分。下半部分被切断,即使动作栏似乎有足够的空间让它正确地绘制自己。

我也失去了操作项样式,因为这些是普通按钮以及分隔线。我更愿意找到一个使用本机操作项的解决方案,因为它可以更轻松地与整个应用程序中的其他操作栏一起设置样式。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal">

                <Button
                    android:id="@+id/cancel_btn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:text="Cancel" />

                <Button
                    android:id="@+id/save_btn"
                    android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:text="Save" />
</LinearLayout>

第四次尝试

这个非常接近。我正在浏览 ActionBarSherlock 演示项目,并注意到当使用拆分菜单栏时,布局往往会居中。所以我恢复到我一直在使用的原始菜单,并添加了 showAsAction ifRoom 值。

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

    <item android:id="@+id/menu_item_cancel"
            android:showAsAction="ifRoom"
            android:title="Cancel"/>

    <item android:id="@+id/menu_item_save"
            android:showAsAction="ifRoom"
            android:title="Save"/>
</menu>

我还将它添加到清单中的活动中:

android:uiOptions="splitActionBarWhenNarrow"

这给了我想要的确切样式......但它在拆分操作栏中​​。我想要这个在顶部,而不是在底部。在带有 Android 2.2 的模拟器上运行它可以工作,但似乎将两个选项与文本长度成比例居中,因此取消的区域大于保存的区域。

如果有人知道一种获得这种精确样式的方法,但在顶部操作栏中,那将解决所有问题。

4

1 回答 1

0

使用本机操作栏样式或选项似乎不是一种方法。不得不使用自定义视图,类似于我的第三次尝试,修改了样式和背景来模仿操作栏。

于 2012-12-22T10:03:19.060 回答