Android自定义控件—下拉菜单

来源:互联网 发布:网络基础架构 编辑:程序博客网 时间:2024/05/15 00:59

效果图:



实现思路是:EditText+PopupWindow+ListView(PopupWindow接触的少,注意下他的用法)

package com.dystu.edittextdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView;public class MainActivity extends Activity {private EditText input;private ImageView downArrow;private List<String> msgList;private PopupWindow popWin;private ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);input = (EditText) findViewById(R.id.input);downArrow = (ImageView) findViewById(R.id.down_arrow);msgList = new ArrayList<String>();for (int i = 0; i < 20; i++) {msgList.add("1000000000"+i);}initListView();downArrow.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("=======");//定义 popupWindowpopWin = new PopupWindow(MainActivity.this);popWin.setWidth(input.getWidth()); //设置宽度popWin.setHeight(200);//设置popWin 高度popWin.setContentView(listView); //为popWindow填充内容popWin.setOutsideTouchable(true); // 点击popWin 以处的区域,自动关闭 popWinpopWin.showAsDropDown(input, 0, 0);//设置 弹出窗口,显示的位置}});}private void initListView() {listView = new ListView(this);listView.setBackgroundResource(R.drawable.listview_background); //设置listView 背景listView.setDivider(null);//设置条目之间的分隔线为nulllistView.setVerticalScrollBarEnabled(false); // 关闭listView.setAdapter(new MyListAdapter());}private class MyListAdapter extends BaseAdapter{@Overridepublic int getCount() {return msgList.size();}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {ViewHolder holder;if(convertView == null){convertView = View.inflate(getApplicationContext(), R.layout.list_item, null);holder = new ViewHolder();holder.delete = (ImageView) convertView.findViewById(R.id.delete);holder.tv_msg =(TextView) convertView.findViewById(R.id.tv_list_item);convertView.setTag(holder);}else{holder = (ViewHolder) convertView.getTag();}holder.tv_msg.setText(msgList.get(position));holder.delete.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//删除对应的条目msgList.remove(position);//刷新listViewMyListAdapter.this.notifyDataSetChanged();}});convertView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//设置输入框 input.setText(msgList.get(position));popWin.dismiss();}});return convertView;}}private class ViewHolder{TextView tv_msg;ImageView delete;}}






0 0
原创粉丝点击