
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent" >
5
6 <EditText
7 android:id="@+id/input"
8 android:layout_width="200dp"
9 android:layout_height="wrap_content"
10 android:layout_centerHorizontal="true"
11 android:layout_marginTop="10dp"
12 android:text="@string/hello_world" />
13
14 <!-- 下啦三角图案 -->
15 <ImageView
16 android:id="@+id/down_arrow"
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:background="@drawable/down_arrow"
20 android:layout_alignRight="@id/input"
21 android:clickable="true"
22 android:layout_marginTop="20dp" />
23 </RelativeLayout>
1 package com.example.testdemo;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import android.app.Activity;
6 import android.os.Bundle;
7 import android.view.View;
8 import android.view.View.OnClickListener;
9 import android.view.ViewGroup;
10 import android.widget.BaseAdapter;
11 import android.widget.EditText;
12 import android.widget.ImageView;
13 import android.widget.ListView;
14 import android.widget.PopupWindow;
15 import android.widget.TextView;
16
17 public class MainActivity extends Activity {
18
19 private EditText et_input;
20 private ImageView downArrow;
21 private List<String> msgList;
22 private PopupWindow popWin;
23 private ListView listView;
24
25 @Override
26 protected void onCreate(Bundle savedInstanceState) {
27 super.onCreate(savedInstanceState);
28 setContentView(R.layout.activity_main);
29
30 et_input = (EditText) findViewById(R.id.input);
31 downArrow = (ImageView) findViewById(R.id.down_arrow);
32 msgList = new ArrayList<String>();
33
34 for (int i = 0; i < 20; i++) {
35 msgList.add("1000000000" + i);
36 }
37
38 initListView();
39
40 downArrow.setOnClickListener(new OnClickListener() {
42 @Override
43 public void onClick(View v) {
44 System.out.println("=======");
45 // 定义 popupWindow
46 popWin = new PopupWindow(MainActivity.this);
47 // 设置宽度
48 popWin.setWidth(et_input.getWidth());
49 // 设置popWin 高度
50 popWin.setHeight(200);
51 // 为popWindow填充内容
52 popWin.setContentView(listView);
53 // 点击popWin 以处的区域,自动关闭 popWin
54 popWin.setOutsideTouchable(true);
55 // 设置 弹出窗口,显示的位置
56 popWin.showAsDropDown(et_input, 0, 0);
57 }
58 });
59 }
60
61 private void initListView() {
62 listView = new ListView(this);
63 // 设置listView背景
64 listView.setBackgroundResource(R.drawable.listview_background);
65 // 设置条目之间的分隔线为null
66 listView.setDivider(null);
67 // 关闭
68 listView.setVerticalScrollBarEnabled(false);
69 listView.setAdapter(new MyListAdapter());
70 }
71
72 private class MyListAdapter extends BaseAdapter {
73 @Override
74 public int getCount() {
75 return msgList.size();
76 }
77 @Override
78 public Object getItem(int position) {
79 return position;
80 }
81 @Override
82 public long getItemId(int position) {
83 return position;
84 }
86 @Override
87 public View getView(final int position, View convertView,
88 ViewGroup parent) {
89 ViewHolder holder;
90 if (convertView == null) {
91 convertView = View.inflate(getApplicationContext(),
92 R.layout.list_item, null);
93 holder = new ViewHolder();
94
95 holder.delete = (ImageView) convertView
96 .findViewById(R.id.delete);
97 holder.tv_msg = (TextView) convertView
98 .findViewById(R.id.tv_list_item);
99 convertView.setTag(holder);
100 } else {
101 holder = (ViewHolder) convertView.getTag();
102 }
103 holder.tv_msg.setText(msgList.get(position));
104 holder.delete.setOnClickListener(new OnClickListener() {
106 @Override
107 public void onClick(View v) {
108 // 删除对应的条目
109 msgList.remove(position);
110 // 刷新listView
111 MyListAdapter.this.notifyDataSetChanged();
112 }
113 });
114 convertView.setOnClickListener(new OnClickListener() {
115 @Override
116 public void onClick(View v) {
117 // 设置输入框
118 et_input.setText(msgList.get(position));
119 popWin.dismiss();
120 }
121 });
122 return convertView;
123 }
124 }
125
126 private class ViewHolder {
127 TextView tv_msg;
128 ImageView delete;
129 }
130
131 }