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 }