Menus
Creating Contextual Menus
2 ways: 1. floating context menu 2.contexual action mode. 对比如图:
floating context menu: 1.找到view -> registerForContextMenu() 2. onCreateContextMenu() 3.onContextItemSelected()
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); }3...
@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.edit: editNote(info.id); return true; case R.id.delete: deleteNote(info.id); return true; default: return super.onContextItemSelected(item); } }contextual action mode: //TODO
Custom Components
componentized model, 基础是 View 和 ViewGroup
widgets: android.widgets
layouts: android.view
The Basic Approach
1. 继承 View 类或它的子类
2. override onXXX() methods.(onDraw(), onMeasure()...)
3. 增加构造函数,使得其可以在xml中使用新属性。增加自己的methods
4. 使用该class.
Fully Customized Components //TODO
Compound Controls
1. 继承某个layout类
2. 定义构造器:先调用父类构造器,然后创建内部component,处理xml属性,设置listener
3. 定义自己的methods
4. 根据需要定义 on....() methods
(注:1, 2, 4是最主要的步骤... 可以参考Api Demo, Views/Lists, List4.java 和 List6.java)
Modifying an Existing View Type //TODO