自定义一个仿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
- 自定义一个仿Spinner
- 仿QQ下拉菜单列表 自定义Spinner
- 一个背景图实现自定义spinner样式
- 自定义Spinner
- 自定义spinner
- 自定义spinner
- 自定义Spinner
- 自定义spinner
- 自定义Spinner
- 自定义Spinner
- 自定义spinner
- 【Android开发:自定义控件系列一】仿android4.0 Spinner下拉效果
- 【Android开发:自定义控件系列一】仿android4.0 Spinner下拉效果
- 【Android开发:自定义控件系列一】仿android4.0 Spinner下拉效果
- Android综合Demo 仿Win8可拖拽界面 自定义控件 自定义spinner,自定义顶栏和副顶栏,内存管理
- 一个仿javaeye的自定义分页标签
- 用ExpandableListView+Dialog 仿Spinner
- Android Spinner 仿 HTML Select
- mysq数据从一个数据库的表复制到另一个数据库的表
- windows7中安装jdk1.8
- redis学习笔记
- IOS自动布局之Autoresizing
- linux下find(文件查找)命令的用法总结
- 自定义一个仿Spinner
- 【HDU】5859 Captain is coding【优先队列贪心】
- plsql日期显示问题
- 免费ARP(gratuitousARP)
- Android快速开发系列 10个常用工具类
- 自定义View总结2
- NOI 模拟试题(二)
- Eclipse SDK Manager无法启动
- (android高仿系列)今日头条 --新闻阅读器 (一)