1:新建一个Android项目将相关资源文件拷贝到如图所示文件夹中
2:在activity_main.xml布局文件中资源文件布局如下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<EditText
android:id="@+id/et_test"
android:layout_width="180dip"
android:layout_height="wrap_content"
android:hint="请输入QQ号码"
/>
<ImageButton
android:id="@+id/ib_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button"
android:layout_alignTop="@id/et_test"
android:layout_alignRight="@id/et_test"
android:layout_alignBottom="@id/et_test"
/>
</RelativeLayout>
list_itam.xml布局如下(用来显示在Popupwindow每一个条目的布局)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="40dip"
android:orientation="horizontal"
android:gravity="center_horizontal"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/user"
/>
<TextView
android:id="@+id/tv_test"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
<ImageView
android:id="@+id/ib_test1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/delete"
/>
</LinearLayout>
3:在MainActivity代码书写如下
package com.example.youku_spinner;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.ColorDrawable;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
public class MainActivity extends Activity {
protected static final String TAG = "MainActivity";
private EditText et_test;
private ImageButton ib;
private PopupWindow pw;//用来显示下拉菜单条
private ListView listview;
private ArrayList<String> qqstrs;//用来显示号码的集合
private SpninnerListViewAdapter sladapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_test = (EditText) findViewById(R.id.et_test);
ib = (ImageButton) findViewById(R.id.ib_test);
qqstrs=new ArrayList<String>();
//初始化20个qq号码
for(int i=12345678;i<12345698;i++){
qqstrs.add(i+"");
}
ib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "onClick");
if(null==pw||!pw.isShowing()){
showPopupwindow();
}else{
dimissPopupwindow();
}
}
});
}
/**
* 显示popupwindow
*/
public void showPopupwindow(){
if(null==pw){
listview = new ListView(this);
sladapter = new SpninnerListViewAdapter();
listview.setAdapter(sladapter);
listview.setDivider(null);
listview.setCacheColorHint(0x00000000);
pw = new PopupWindow(listview, et_test.getWidth(), LayoutParams.WRAP_CONTENT, true);
pw.setBackgroundDrawable(new ColorDrawable(0x00000000));//目的是让 显示popupwindow后点击popupwindow后,讲自动隐藏popupwindow
}
pw.showAsDropDown(et_test, 0,0);
}
/**
* 隐藏popupwindow
*/
public void dimissPopupwindow(){
if(null!=pw){
pw.dismiss();
}
}
private class SpninnerListViewAdapter extends BaseAdapter{
@Override
public int getCount() {
return qqstrs.size();
}
@Override
public Object getItem(int arg0) {
return qqstrs.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(null==convertView){
convertView=View.inflate(getApplicationContext(), R.layout.list_item, null);
}
final TextView tv_test=(TextView) convertView.findViewById(R.id.tv_test);
tv_test.setText(qqstrs.get(position));
tv_test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
et_test.setText(tv_test.getText());
dimissPopupwindow();
}
});
//给imagebutton设置点击事件,用来当点击时,讲该条目删除掉
convertView.findViewById(R.id.ib_test1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
qqstrs.remove(position);//将点击的当前view的QQ号码从集合中移除掉
sladapter.notifyDataSetChanged();//通知SpninnerListViewAdapter适配器数据发生改变了
}
});
return convertView;
}
}
}
Ok 搞定!希望分享给大家! 谢谢