我正在尝试显示一个带有两个项目的操作栏,取消和保存,但我希望这些布局跨越操作栏的整个长度,如下所示:
______________________________
|____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 的模拟器上运行它可以工作,但似乎将两个选项与文本长度成比例居中,因此取消的区域大于保存的区域。
如果有人知道一种获得这种精确样式的方法,但在顶部操作栏中,那将解决所有问题。