我正在尝试显示一个包含两个项目的操作栏,取消和保存,但我希望这些项目布局跨越操作栏的整个长度,如下所示:
______________________________
|____Cancel____|____Save ____|
| |
| |
| |
| |
所以基本上我需要一种方法来只显示两个动作项,居中并跨越整个动作栏。
实现这一目标的最简单方法是什么?我正在考虑使用customlayout,但由于我还是新手使用动作栏和菜单,我不知道我怎么能做到这一点并让这些仍然是菜单操作项。
有某种造型解决方案吗?什么是实现这一目标的最佳和最无痛的方式?
修改
由于这是我第一次使用动作条和自定义布局,我对于什么会起作用以及什么是无望的愚蠢的方法感到无法理解。例如,将自定义布局设置为:
<?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的模拟器上运行此功能,但似乎将两个选项的中心与文本的长度成比例,因此Cancel的区域大于Save的区域。
如果有人知道如何获得这种确切的样式,但在顶部的操作栏中,这将解决所有问题。
答案 0 :(得分:0)
似乎不是使用本机操作栏样式或选项执行此操作的方法。不得不使用自定义视图,类似于我的第三次尝试,修改了样式和背景来模仿操作栏。