ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:29.34KB ,
资源ID:10461165      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10461165.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android实现仿QQ登录可编辑下拉框.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android实现仿QQ登录可编辑下拉框.docx

1、Android实现仿QQ登录可编辑下拉框Android实现仿QQ登录可编辑下拉菜单在Android里,直接提供的Spinner控件虽然可以实现下拉菜单的效果,但其效果并不理想,很多时候我们需要类似手机QQ那样既可以在文本框中直接输入编辑文字,可以在下拉菜单中选中或者删除菜单选项,并且下拉菜单并不是以遮罩整个手机屏幕方式,而是以浮动在屏幕上的效果出现。下面呢,就来实现一下这些效果。最后效果: 此次主要以EdiText、PopupWindow、ListView及Adapter来实现这种下拉效果。具体实现步骤就不一步步详细介绍了,直接贴完整代码吧,注释比较详细,相信都能看得懂。Activity代码:

2、package com.zw.select;import java.util.ArrayList;import android.app.Activity;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.os.Handler;import android.os.Handler.Callback;import android.os.Message;import android.view.View;import android.widget.Button;import an

3、droid.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.ListView;import android.widget.PopupWindow;/主界面Activitypublic class SelectActivity extends Activity implements Callback /PopupWindow对象 privat

4、e PopupWindow selectPopupWindow= null; /自定义Adapter private OptionsAdapter optionsAdapter = null; /下拉框选项数据源 private ArrayList datas = new ArrayList(); /下拉框依附组件 private LinearLayout parent; /下拉框依附组件宽度,也将作为下拉框的宽度 private int pwidth; /文本框 private EditText et; /下拉箭头图片组件 private ImageView image; /恢复数据源按钮

5、private Button button; /展示所有下拉选项的ListView private ListView listView = null; /用来处理选中或者删除下拉项消息 private Handler handler; /是否初始化完成标志 private boolean flag = false; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.select); /* * 没有在onCreat

6、e方法中调用initWedget(),而是在onWindowFocusChanged方法中调用, * 是因为initWedget()中需要获取PopupWindow浮动下拉框依附的组件宽度,在onCreate方法中是无法获取到该宽度的 */ Override public void onWindowFocusChanged(boolean hasFocus) super.onWindowFocusChanged(hasFocus); while(!flag) initWedget(); flag = true; /* * 初始化界面控件 */ private void initWedget()

7、 /初始化Handler,用来处理消息 handler = new Handler(SelectActivity.this); /初始化界面组件 parent = (LinearLayout)findViewById(R.id.parent); et = (EditText)findViewById(R.id.edittext); image = (ImageView)findViewById(R.id.btn_select); /获取下拉框依附的组件宽度 int width = parent.getWidth(); pwidth = width; /设置点击下拉箭头图片事件,点击弹出Popu

8、pWindow浮动下拉框 image.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) if(flag) /显示PopupWindow窗口 popupWindwShowing(); ); /初始化PopupWindow initPopuWindow(); button = (Button)findViewById(R.id.refresh); /设置点击事件,恢复下拉框列表数据,没有什么作用,纯粹是为了方便多看几次效果而设置 button.setOnClickListener(n

9、ew View.OnClickListener() Override public void onClick(View v) initDatas(); optionsAdapter.notifyDataSetChanged(); ); /* * 初始化填充Adapter所用List数据 */ private void initDatas() datas.clear(); datas.add(北京); datas.add(上海); datas.add(广州); datas.add(深圳); datas.add(重庆); datas.add(青岛); datas.add(石家庄); /* * 初始

10、化PopupWindow */ private void initPopuWindow() initDatas(); /PopupWindow浮动下拉框布局 View loginwindow = (View)this.getLayoutInflater().inflate(R.layout.options, null); listView = (ListView) loginwindow.findViewById(R.id.list); /设置自定义Adapter optionsAdapter = new OptionsAdapter(this, handler,datas); listVie

11、w.setAdapter(optionsAdapter); selectPopupWindow = new PopupWindow(loginwindow, pwidth,LayoutParams.WRAP_CONTENT, true); selectPopupWindow.setOutsideTouchable(true); /这一句是为了实现弹出PopupWindow后,当点击屏幕其他部分及Back键时PopupWindow会消失, /没有这一句则效果不能出来,但并不会影响背景 /本人能力极其有限,不明白其原因,还望高手、知情者指点一下 selectPopupWindow.setBackg

12、roundDrawable(new BitmapDrawable(); /* * 显示PopupWindow窗口 * * param popupwindow */ public void popupWindwShowing() /将selectPopupWindow作为parent的下拉框显示,并指定selectPopupWindow在Y方向上向上偏移3pix, /这是为了防止下拉框与文本框之间产生缝隙,影响界面美化 /(是否会产生缝隙,及产生缝隙的大小,可能会根据机型、Android系统版本不同而异吧,不太清楚) selectPopupWindow.showAsDropDown(parent

13、,0,-3); /* * PopupWindow消失 */ public void dismiss() selectPopupWindow.dismiss(); /* * 处理Hander消息 */ Override public boolean handleMessage(Message message) Bundle data = message.getData(); switch(message.what) case 1: /选中下拉项,下拉框消失 int selIndex = data.getInt(selIndex); et.setText(datas.get(selIndex);

14、dismiss(); break; case 2: /移除下拉项数据 int delIndex = data.getInt(delIndex); datas.remove(delIndex); /刷新下拉列表 optionsAdapter.notifyDataSetChanged(); break; return false; 自定义适配器Adapter代码:package com.zw.select;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.os

15、.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;/自定义适配器Adapterpublic class OptionsAdapter extends BaseAdapter private ArrayLis

16、t list = new ArrayList(); private Activity activity = null; private Handler handler; /* * 自定义构造方法 * param activity * param handler * param list */ public OptionsAdapter(Activity activity,Handler handler,ArrayList list) this.activity = activity; this.handler = handler; this.list = list; Override publ

17、ic int getCount() return list.size(); Override public Object getItem(int position) return list.get(position); Override public long getItemId(int position) return position; Override public View getView(final int position, View convertView, ViewGroup parent) ViewHolder holder = null; if (convertView =

18、 null) holder = new ViewHolder(); /下拉项布局 convertView = LayoutInflater.from(activity).inflate(R.layout.option_item, null); holder.textView = (TextView) convertView.findViewById(R.id.item_text); holder.imageView = (ImageView) convertView.findViewById(R.id.delImage); convertView.setTag(holder); else ho

19、lder = (ViewHolder) convertView.getTag(); holder.textView.setText(list.get(position); /为下拉框选项文字部分设置事件,最终效果是点击将其文字填充到文本框 holder.textView.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) Message msg = new Message(); Bundle data = new Bundle(); /设置选中索引 data.putInt(selI

20、ndex, position); msg.setData(data); msg.what = 1; /发出消息 handler.sendMessage(msg); ); /为下拉框选项删除图标部分设置事件,最终效果是点击将该选项删除 holder.imageView.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) Message msg = new Message(); Bundle data = new Bundle(); /设置删除索引 data.putInt(delInd

21、ex, position); msg.setData(data); msg.what = 2; /发出消息 handler.sendMessage(msg); ); return convertView; class ViewHolder TextView textView; ImageView imageView; 主界面布局select.xml文件:PopupWindow浮动下拉框布局options.xml文件:下拉选项布局option_item.xml文件:到此代码及布局文件基本都贴完了。哦,对了,我是在Android 2.2 测试运行的。本人对Android学习、了解十分有限,而且各种文件、变量、方法等等命名也很不规范,所以代码肯定有很多不足之处,还请各位海涵!当然,更希望各位能不吝赐教,本人将满怀荣幸与感激!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1