一:UI Components介绍
1.是什么:
用于呈现View的一些组件,并不是View但是可以更好的呈现View。
2.主要包括:
(1)Menu菜单:
①Option Menu(选项菜单) ②Context Menu(上下文菜单) ③popup Menu(弹出式菜单)
(2)ActionBar(动作栏)
(3)Dialog(对话框)
①AlertDialog(提示对话框) ②DatePickerDialog(日期对话框) ③ProgressDialog(进度对话框)
(4)Notifiction(通知)
(5)Toast
二:Menu菜单
1.Option Menu 选项菜单
实现步骤:
①重写onCreatOptionsMenu()方法;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.second, menu);
return true;
}
②设置监听:重写onOptionsItemSelected()方法;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
注意:需要判断点击位置即通过判断item.getItemId和点击的菜单的id比较从而触发相应事件;
2.Context Menu 上下文菜单
实现步骤:
①获得ViewGroup对象,并关联适配器,存放数据源;
②给容器View注册上下文菜单:
registerForContextMenu(如ListView lv);//注册上下文菜单;(基于ListView的长按事件;长按就会弹出上下文菜单)
③创建菜单:
//当长按注册了上下文菜单的view时,此方法会执行;
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.ctx, menu);
}
④处理上下文菜单的点击事件:
@Override
public boolean onContextItemSelected(MenuItem item) {
int id=item.getItemId();
if(id==R.id.action_settings1){
AdapterContextMenuInfo info=(AdapterContextMenuInfo) item.getMenuInfo();
String text=list.get(info.position);//点击该菜单弹出该item中的信息;
Toast.makeText(this, text, 0).show();
}else if(id==R.id.action_settings2){
Toast.makeText(this, "delete", 0).show();
//获得要删除的item相关信息;(列入位置)
//从数据集中删除数据,更新listView
AdapterContextMenuInfo info=(AdapterContextMenuInfo) item.getMenuInfo();
list.remove(info.position);
ArrayAdapter adapter=(ArrayAdapter<?>)lv.getAdapter();//获得ListView关联的适配器;
adapter.notifyDataSetChanged();//更新ListView
}
return super.onContextItemSelected(item);
}
3.弹出式菜单:PopupMenu
当点击比如Button按钮时弹出:
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt=(Button) findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
//构建PopupMenu对象;
PopupMenu pm=new PopupMenu(MainActivity.this, v);