Android 模拟QQ空间小加号+用popupWindow制作spinner
来源:互联网 发布:java工资待遇如何 编辑:程序博客网 时间:2024/05/16 11:00
最近做了个小案例,关于弹出窗口的。TAT 总感觉自己速度好慢啊~果然是不熟练!还是要多练!
首先我参考了网上的源码,发现居然有popupwindow这类神奇的东西,本来是想用对话框或者参考spinner源码(虽然现在对我而言还挺困难的)做的,果然我想得太复杂了~
首先是弄了个按钮,点击的话可以初始化popupwindow(设置了一个Listview配置进去)
popupWindow = new PopupWindow(listView, getScreenWidth(this)/4,getScreenHeight(this)/6);
API文档: PopupWindow(View contentView, int width, int height)
Create a new non focusable popup window which can display the contentView.
这个类的初始化涉及坐标,view,是否可点击。
小积累:获取屏幕宽高 (另一篇文章标题)
然后我复习了一下listview,它的适配器要重写四个方法的,new一个arraylist装上去就好了,一个适配器可以弄多个arraylist
套路代码:
private ListView listView;private ArrayList<String> datas;
private void initListView() { listView = new ListView(this); datas = new ArrayList<String>(); datas.add("111"); datas.add("222"); datas.add("333"); listView.setAdapter(new MyAdapter()); } class MyAdapter extends BaseAdapter { @Override //一共有多少数据需要显示 public int getCount() { return datas.size(); } @Override //返回position位置的指定对象 public Object getItem(int position) { return datas.get(position); } @Override //返回position对应位置的id public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { /* View view; if(convertView == null){ view = View.inflate(parent.getContext(), R.layout.item_number, null); }else { view = convertView; }
*/ TextView tv_number = (TextView) view.findViewById(R.id.tv_number); tv_number.setText(datas.get(position)); return view;//也可以return tv的。 } }
popupwindow常用方法:
popupWindow.dismiss(); 弹出。
弹入的时候new它,然后show....()(这个方法可以设置它在那里show,是控制显示位置的)就好了,比如showasdropdown()
popupwindow.setOutsideTouchable(true);表示在外部区域点击的时候,自动隐藏
popupwindow.setFoucusable(true);与布局一起用,获取焦点点击事件,必须要有这个,否则就算你在下面设置了listview的onitemclicklisten也没用。
popupwindow.setBackgroundDrawable(new BitmapDrawable());是设置空的背景
-------------
取焦点:在item所在布局(根点)加上:android:descendantFocusability="blocksDescendants" 这是设置“块”的可取焦点,假如listview的一行又有图像,文字,按钮,那么按钮就会更优先地获得焦点,为了使这一行都能获得焦点(功能可以不同),于是选择blocksDescendants。
listView.setDividerHeight(0);(设置分割线高度)listView.setBackgroundResource(R.drawable.listview_background);
listView.setOnItemClickListener(this);(可点击事件)
用popuwindow同样可以模仿制作spinner的实现效果
1、写布局的小积累:
在relativelayout中,设置控件在右边:layout_alignparentright="true"
gravity(center_vertical是垂直居中)和layout_gravity是不同的
padding可以扩大点击范围(图片上看不到,但是点击范围(点击控件周围显示的那些小框框)真的大了),是内边距。
magin是外边距,用法是layout_magin
Padding 为内边框,指该控件内部内容,如文本/图片距离该控件的边距Margin 为外边框,指该控件距离边父控件的边距
orientation是方向(一半linearlayout)
2、实现逻辑:
在main中的oncreate()里直接findViewById,相当于前面省略了一个当前引用对象main。也有点类似匿名了,可以直接find..。(R).setOnClickListener(this)。
new popupwindow,listview,adapter。然后设置点击按钮show popupwindow事件。然后得到listview的点击事件:
listview.setOnItemClickListener(this);
和按钮点击事件差不多,在下面加方法:
@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("onItemClick: " + position); ed.setText(datas.get(position)); popupWindow.dismiss();}
在adapater的第四个方法中加上找到按钮控件匿名(在第四个方法的括号中要加上final,这是java基础相关)点击按钮删除某一行:把datas.get(position)换成datas.remove(position)
if(datats.size()==0)dismiss掉popupwindow
在这第四个方法里面find....前面要加上view,否则就不是第四个方法所属对象的调用,而是当前main的调用
0 0
- Android 模拟QQ空间小加号+用popupWindow制作spinner
- Android Spinner 用PopupWindow实现
- PopupWindow制作Spinner下拉列表
- android 扁平风格按钮以及弹出窗口(popupwindow)来模拟标准下拉窗口(spinner)
- Android基础空间spinner
- 模拟QQ空间
- android自定义tabwidget,popupwindow,spinner,dialog,listview
- Android Spinner、PopupWindow和Dialog的关系
- 【Android UI设计与开发】第09期:Fragment+PopupWindow仿QQ空间最新版底部菜单栏
- android popupwindow 小问题
- QQ空间背景音乐 链接制作
- python 模拟登陆QQ空间
- 记录一笔Android上面用PopupWindow+Spinner点击直接报错
- 用DIV模拟TEXTAREA【QQ空间说说对话框】
- android仿QQ点击加号弹出菜单特效
- Android Spinner 放在PopupWindow 点击报错
- Android中用PopupWindow+Spinner点击直接报错
- 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
- Centos安装SZRZ进行文件传输
- BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序
- 【新手】Numpy axis理解
- eclipse搭建ssh框架(一)
- JavaScript基础知识(4)
- Android 模拟QQ空间小加号+用popupWindow制作spinner
- 欢迎使用CSDN-markdown编辑器
- MX30100血氧心率传感器 使用Note
- 代理模式
- Pycharm5.0.4(win10)配置opencv2.4.9
- MOM的架构 JMS消息模型
- JavaScript基础知识(5)
- 图解列数据库存储
- sublime text 3 怎样安装及使用less插件,并且能够自动编译css文件