这次我们还是继续研究整个开发中遇到的一些有意思,值得一看的小实例
1.ViewPager中存在按钮或者图片(效果是点击进入ViewPager的各个View),如何实现呢?
.再次,先说明:view存在ViewPager中的顺序是0-1-2-3-4.......
.mTab1.setOnClickListener(new MyOnClickListener(0));
mTab2.setOnClickListener(new MyOnClickListener(1));
mTab3.setOnClickListener(new MyOnClickListener(2));
mTab4.setOnClickListener(new MyOnClickListener(3));
.
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
viewPager.setCurrentItem(index);
}
};
.
2.PopUpMenue的使用---一种弹出菜单----效果是微信或者QQ右上角按钮点击会展开多个选项的菜单栏
.
在activity或者fragment中使用PopupMenu
- final ImageButton moreMenu = (ImageButton)v.findViewById(R.id.more_menu);
- moreMenu.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v){
- PopupMenu popup = new PopupMenu(getActivity(), moreMenu);
- //Inflating the Popup using xml file
- popup.getMenuInflater()
- .inflate(R.menu.poupup_menu_home, popup.getMenu());
- //registering popup with OnMenuItemClickListener
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return true;
- }
- });
- popup.show(); //showing popup menu
- }
- });
其中moreMenu是一个按钮,由他触发PopupMenu的显示。
.
//该方法返回的是一个View的对象,是布局中的根
layout = inflater.inflate(R.layout.main_menu, null);
//下面我们要考虑了,我怎样将我的layout加入到PopupWindow中呢???很简单
menuWindow = new PopupWindow(layout,android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT); //后两个参数是width和height
//menuWindow.showAsDropDown(layout); //设置弹出效果
//menuWindow.showAsDropDown(null, 0, layout.getHeight());
menuWindow.showAtLocation(this.findViewById(R.id.mainweixin), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
.
. 下面是PopupMenu以及PopupWindow的区别:
.
PopupWindow
和PopupMenu
的功能都是为了弹出一个窗体,不过PopupMenu
的功能比较单一,而PopupWindow
更强。
PopupMenu
.
.
.
.
上面的代码最主要的只有3行
- 1
- 2
很简单,只需要两行代码就搞定了。
期初我以为PopupMenu
会和Activity
的Menu
共用Click事件的,但是实现onOptionsItemSelected方法后发现只有Activity
的Menu
会触发事件,mPopMenu依然要通过setOnMenuItemClickListener()才能实现点击事件的监听
.
.
PopupWindow
PopupWindow相比menu功能要强的多,可以实现布局更加复杂的效果