一.通过activity启动Context Action Bar

1.主java

public class ActivityActionModeFrgmt extends Fragment implements
OnCheckedChangeListener, ActionMode.Callback {
private ActionMode mActionMode;
private CheckBox mCheckBox; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frgmt_cab_for_activity, container,
false);
mCheckBox = (CheckBox) v.findViewById(R.id.vid_check_box);
mCheckBox.setOnCheckedChangeListener(this);
return v;
} @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mActionMode = getActivity().startActionMode(this);// activity启动一个继承ActionMode,需要ActionMode.Callback
}else
{
mActionMode.finish();
}
} // for ActionMode.Callback
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.menu_context_for_activity, menu);// 创建context action
// bar的菜单
return true;
} @Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
mode.setTitle("Checked");
return true;
} @Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.action_delete:
Toast.makeText(getActivity(), "delete", Toast.LENGTH_SHORT).show();
break;
case R.id.action_send:
Toast.makeText(getActivity(), "send", Toast.LENGTH_SHORT).show();
break;
case R.id.action_share:
Toast.makeText(getActivity(), "share", Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings:
Toast.makeText(getActivity(), "settings", Toast.LENGTH_SHORT)
.show();
break;
default:
break;
}
mode.finish();
return true;
} @Override
public void onDestroyActionMode(ActionMode mode) {
mCheckBox.setChecked(false);
}
}

2.菜单文件 menu_context_for_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@+id/action_delete"
android:icon="@android:drawable/ic_menu_delete"
android:showAsAction="ifRoom|withText"
android:title="@string/delete"
android:titleCondensed="delete">
</item>
<item
android:id="@+id/action_share"
android:showAsAction="ifRoom|withText"
android:title="@string/share"/>
<item
android:id="@+id/action_send"
android:showAsAction="ifRoom|withText"
android:title="@string/send"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/> </menu>

3.布局文件 frgmt_cab_for_activity.xml

<?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:orientation="vertical" > <TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/aty_action_mode" /> <CheckBox
android:id="@+id/vid_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/view_s_check_mode" /> </LinearLayout>

二. ListView 用Context Action Bar 多选删除示例

1.MultiCabFrgmt.java

public class MultiCabFrgmt extends Fragment implements MultiChoiceModeListener {

    private ListView mListView;
private SelectionArrayAdapter adapter;
private List<ItemData> data; private ShareActionProvider mShareActionProvider; public boolean isItemSelected(int position) {
return false;
} private void init() {
data = new ArrayList<ItemData>();
ItemData ida;
for (int i = 0; i < 32; ++i) {
ida = new ItemData();
ida.txt = "item" + i;
data.add(ida);
}
adapter = new SelectionArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1, data);
mListView.setAdapter(adapter);
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);//CHOICE_MODE_SINGLE
mListView.setMultiChoiceModeListener(this);
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frgmt_cab_for_listview, container, false);
mListView = (ListView) v.findViewById(R.id.id_listview);
init();
return v;
} @Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.menu_context_for_listview, menu);
MenuItem mi = menu.findItem(R.id.action_share);
mShareActionProvider = (ShareActionProvider) mi.getActionProvider();
mShareActionProvider.setShareIntent(new Intent(Intent.ACTION_SEND)
.setType("image/*"));
return true;
} @Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return true;
} @Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.action_delete: {
for (int i = data.size() - 1; i >= 0; --i) {
if (data.get(i).selected) {
data.remove(i);
}
}
}
break;
case R.id.action_share:
break;
case R.id.action_settings:
}
mode.finish();
return true;
} @Override
public void onDestroyActionMode(ActionMode mode) {
for (int i = 0; i < data.size(); i++) {
data.get(i).selected = false;
}
} @Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
ItemData ida = data.get(position);
ida.selected = !ida.selected;
adapter.notifyDataSetChanged();
mode.setTitle(mListView.getCheckedItemCount() + " selected");
}
}

2.SelectionArrayAdapter.java

public class SelectionArrayAdapter extends ArrayAdapter<ItemData> {

    private List<ItemData> data;
private LayoutInflater inflater;
private int resource; private void init(Context context,int resource,List<ItemData> data){
this.data = (ArrayList<ItemData>) data;
inflater = LayoutInflater.from(context);
this.resource = resource;
}
public SelectionArrayAdapter(Context context, int resource,
int textViewResourceId, List<ItemData> data) {
super(context, resource, textViewResourceId, data);
init(context,resource,data);
}
public SelectionArrayAdapter(Context context, int resource,
List<ItemData> data) {
super(context, resource, data);
init(context,resource,data);
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
if (null == convertView) {
convertView = inflater.inflate(this.resource, null);
}
TextView tv = (TextView) convertView.findViewById(android.R.id.text1);
ItemData item = getItem(position);
tv.setText(item.txt);
if (item.selected) {
convertView.setBackgroundColor(0x7f0f0f0f);// this is a selected
}else{
convertView.setBackgroundColor(0x7ff0f0f0); // default color
}
return convertView;
} @Override
public ItemData getItem(int position) {
return data.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public void clear() {
super.clear();
} @Override
public int getCount() {
int sz = data.size();
return sz;
}
}

3.Context Action Bar的操作项菜单文件 menu_context_for_listview.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@+id/action_share"
android:orderInCategory="100"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="always"
android:title="@string/share"/>
<item
android:id="@+id/action_delete"
android:showAsAction="ifRoom|withText"
android:title="@string/delete"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/> </menu>

Contextual Action bar(3) 两个示例的更多相关文章

  1. Contextual Action bar(2) 简介,启动,各函数介绍

    一.Context Action Bar简介 它是一个ActionBar,有各种操作项,但它不是始终显示的ActionBar,它需要上下文才显示.样式如下: 二.Context Action Bar的 ...

  2. Contextual Action bar(1) CAB in Android

    Contextual Action bar (CAB) in Android BY PARESH MAYANI - OCTOBER, 23RD 2013 Before getting into the ...

  3. Action Bar详解

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  4. Android UI开发第二十四篇——Action Bar

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  5. 【转】Android UI开发第二十四篇——Action Bar

    Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...

  6. Android Contextual Menus之二:contextual action mode

    Android Contextual Menus之二:contextual action mode 接上文:Android Contextual Menus之一:floating context me ...

  7. Android设计和开发系列第二篇:Action Bar(Develop—API Guides)

    Action Bar IN THIS DOCUMENT Adding the Action Bar Removing the action bar Using a logo instead of an ...

  8. Android设计和开发系列第二篇:Action Bar(Design)

    Action Bar The action bar is a dedicated piece of real estate at the top of each screen that is gene ...

  9. Android系统UI交互控件Action Bar初探

    过年期间,Google正式宣布取消Android系统中MENU键的使用,也就是基于Android 4.0系统的手机都应没有MENU这一固定按键.这无疑是个变革性的改动,在我眼中,这似乎把Android ...

随机推荐

  1. 图像处理之 opencv 学习---opencv 中的常用算法

    http://blog.csdn.net/lindazhou2005/article/details/1534234 文中有提到鲁棒性 http://blog.csdn.net/chary8088/a ...

  2. block-循环引用

    在ARC机制下,app的内存管理由操作系统进行管理,不须要程序猿手动的管理内存,方便了开发.虽然,自己主动释放内存非常方便.可是并不是绝对安全,绝对不会产生内存泄露. 大部分导致iOS对象无法按预期释 ...

  3. split+ Pattern切割字符串

    今天在对一个String对象进行拆分的时候,总是无法到达预计的结果.呈现数据的时候出现异常,后来debug之后才发现,错误出在String spilt上,于是开始好好研究下这东西,开始对api里的sp ...

  4. js中return的作用

    1.终止函数的继续运行. 当遇到if…… else是.若出现return,就会出现终止运行,不会继续做出判断 <html> <head> <title>return ...

  5. Redis和StackExchange.Redis

    redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库以整数表示的号码.redisDb.dict 存储着该 ...

  6. 并不对劲的多项式求ln,exp

    ln 解释 设\(g(x)=ln(f(x))\),两边同时求导,则有:\(g'(x)=ln'(f(x))*f'(x)=f^{-1}(x)*f'(x)\)(1) 因为\(f(x)\)是个多项式,所以设\ ...

  7. [Selenium] WebDriver 操作 HTML5 中的 drag/drop

    以 jQuery UI 官方网站元素测试,地址:http://jqueryui.com/draggable/ 示例: package com.learningselenium.html5; impor ...

  8. unity anim(转)

    Unity4的Mecanim动画很早以前就有体验过,迟迟没有加到项目中有两个原因,今天写这篇博客来记录我在做的过程中遇到的一些问题. 1.以前的代码代码量比较多,修改起来动的地方太多了. 2.使用Me ...

  9. 漫谈WebQQ 协议

    阅读目录        1,WEBQQ的登陆协议 2,传说中的心跳包 3,获得群,好友, 4实战(盗号-外挂-广告)     要说怎么突然研究起WEBQQ,也是比较偶然的机会,因为前一份工作专注于B2 ...

  10. 在linux下用tomcat部署java web项目的过程与注意事项(转)

    在linux下用tomcat部署java web项目的过程与注意事项一.安装JDK到http://www.oracle.com/technetwork/java/javase/downloads/in ...