自定义一个仿Spinner

来源:互联网 发布:淘宝店铺出现管控记录 编辑:程序博客网 时间:2024/06/06 08:38

效果图

两个布局文件:
adpter_list.xml

<?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="match_parent"    android:orientation="horizontal"    android:padding="5dp">    <TextView        android:id="@+id/tv_number"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_weight="1"        android:drawableLeft="@mipmap/user"        android:drawablePadding="3dp"        android:gravity="center_vertical"        android:text="999999" />    <ImageView        android:id="@+id/iv_delete"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@mipmap/delete" /></LinearLayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><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="fmy.qf.com.myapplication.MainActivity">    <RelativeLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true">        <EditText            android:layout_marginTop="20dp"            android:id="@+id/et"            android:layout_width="150dp"            android:layout_height="40dp"            android:maxLines="1"            android:paddingRight="30dp" />        <ImageView            android:id="@+id/iv"            android:layout_alignTop="@id/et"            android:layout_alignRight="@id/et"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@mipmap/down_arrow" />    </RelativeLayout></RelativeLayout>

MainActivity

package fmy.qf.com.myapplication;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.EditText;import android.widget.ImageView;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private EditText et;    private ImageView iv;    private ArrayList<String> data = new ArrayList<String>();    private ListView listView;    private Myadpter myadpter;    private PopupWindow popupWindow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initView();        initData();    }    private void initData() {        for (int i = 0; i < 10; i++) {            data.add("99999"+i);        }        initListView();    }    private void initListView() {        listView = new ListView(this);        listView.setVerticalScrollBarEnabled(false);        myadpter = new Myadpter();        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                String num = data.get(position);                et.setText(num);                popupWindow.dismiss();            }        });        listView.setAdapter(myadpter);    }    private int popupWindowHeight = 300;    private void showNumberList(){        if (popupWindow==null){            popupWindow = new PopupWindow(listView,et.getWidth(),popupWindowHeight);        }        //要让其中的view获取焦点,必须设置为true        popupWindow.setFocusable(true);        //还必须设置一个背景图片        popupWindow.setBackgroundDrawable(new BitmapDrawable());        //设置点击外部消失        popupWindow.setOutsideTouchable(true);        popupWindow.showAsDropDown(et);    }    private void initView() {        setContentView(R.layout.activity_main);        et = ((EditText) findViewById(R.id.et));        iv = ((ImageView) findViewById(R.id.iv));        iv.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.iv:                showNumberList();                break;            default:        }    }    class Myadpter extends BaseAdapter{        @Override        public int getCount() {            return data.size();        }        @Override        public Object getItem(int position) {            return position;        }        @Override        public long getItemId(int position) {            return position;        }        class ViewHold {            TextView tv;            ImageView iv;        }        @Override        public View getView(final int position, View convertView, ViewGroup parent) {            ViewHold viewHold;            if (convertView==null){                convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.adpter_list,parent,false);                viewHold = new ViewHold();                viewHold.iv = (ImageView) convertView.findViewById(R.id.iv_delete);                viewHold.tv = ((TextView) convertView.findViewById(R.id.tv_number));                convertView.setTag(viewHold);            }else{                viewHold = (ViewHold) convertView.getTag();            }            viewHold.tv.setText(data.get(position));            final View finalConvertView = convertView;            viewHold.iv.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    data.remove(position);                    notifyDataSetChanged();                    int listviewHeight = finalConvertView.getHeight()*data.size();                    popupWindow.update(et.getWidth(),listviewHeight>300?300:listviewHeight);                    if (data.size()==0){                        popupWindow.dismiss();                        iv.setVisibility(View.GONE);                    }                }            });            return convertView;        }    }}
0 0
原创粉丝点击