Android ActionBar / ActionBarSherlock多选择微调
我有一个ListView包含属于一个或多个类别的项目。 我希望通过点击操作栏中的图标来选择和取消选择这些类别。 这样,listView将根据所选类别进行刷新。
这是我发现的一个例子:
http://www.hostingpics.net/viewer.php?id=581753Screenshot20140110103007.png
目前,我发现了两个解决方案:
第二种解决方案完全符合用户界面的期望,但我认为有多种选择微调解决方案。
Spinner
使用ListPopupWindow
显示下拉菜单,您可以使用相同的方式显示多项选择列表:
private void showPopup() {
final ListPopupWindow lpw = new ListPopupWindow(this);
lpw.setAdapter(/*Your adapter here*/);
lpw.setAnchorView(mAnchor); // see below
lpw.setContentWidth(/*specific value*/); // see below
lpw.show();
// this is required because the popup's `ListView` will not be available
// until the ListPopupWindow is actually shown.
mAnchor.post(new Runnable() {
@Override
public void run() {
lpw.getListView().setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
}
});
}
然后,当选择了正确的MenuItem
时,您可以从onOptionsItemSelected()
回调中调用此方法。 还有两件事你需要注意:
mAnchor
是一个View
,需要在右上角的Activity
布局中插入,以便ListPopupWindow
显示在正确的位置。 例如,如果您有一个Activity
根目录:
一个RelativeLayout
然后mAnchor
将是:
mAnchor = new View(this);
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(0, 0);
rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
mAnchor.setLayoutParams(rlp);
// add mAnchorView first to the RelativeLayout
一个LinearLayout
然后mAnchor
将是:
mAnchor = new View(this);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(0, 0);
llp.gravity = Gravity.RIGHT;
mAnchor.setLayoutParams(llp);
// add mAnchorView first to the LinearLayout(assuming orientation vertical)
等等其他类型的布局。
其次,您需要将ListPopupWindow
的宽度设置为所需的值。 您需要针对不同的屏幕尺寸和方向调整此值(如手机纵向和手机横向,纵向和横向不同的桌面尺寸)。
原始指南可在http://developer.android.com/guide/topics/ui/actionbar.html#Dropdown中找到
添加下拉式导航
图9.操作栏中的下拉导航列表。
作为您的活动的另一种导航(或过滤)模式,操作栏提供内置下拉列表(也称为“微调器”)。 例如,下拉列表可以提供活动内容排序的不同模式。
在更改内容非常重要但不一定经常出现的情况下,使用下拉列表非常有用。 在切换内容更频繁的情况下,您应该改用导航标签。
启用下拉导航的基本步骤是:
actionBar.setListNavigationCallbacks(mSpinnerAdapter,mNavigationCallback);这个方法需要你的SpinnerAdapter和ActionBar.OnNavigationListener。
此过程相对较短,但实现SpinnerAdapter和ActionBar.OnNavigationListener是大部分工作完成的地方。 有许多方法可以实现这些定义下拉导航的功能,并且实现各种类型的SpinnerAdapter超出了本文档的范围(有关更多信息,请参阅SpinnerAdapter类参考)。 但是,下面是SpinnerAdapter和ActionBar.OnNavigationListener的一个示例,帮助您开始(单击标题以显示示例)。
包括在一个RelativeLayout中的ListView,然后设置View.GONE,直到用户按下想要显示的按钮看起来似乎是一种明智的方式。 使用ListViewAdapter可以填充项目列表。
每个项目可以是水平方向的线性布局。
希望我的建议有帮助! :)
链接地址: http://www.djcxy.com/p/18275.html上一篇: Android ActionBar/ActionBarSherlock multiple choices spinner