精华内容
下载资源
问答
  • Android 下拉选择框自定义view

    千次阅读 2019-05-14 14:49:36
    说明:下图这部分自己布局,本文中主要说明的是点击某个分类显示的下拉实现 第一步:自定义SpinnerPopuwindow继承PopupWindow /** * Created by sws on 2019-04-28. * from: * describe: */ public cla...

    首先来看一下实现的效果

    基本思路:继承PopupWindow的自定义View

    说明:下图这部分自己布局,本文中主要说明的是点击某个分类显示的下拉实现

    第一步:自定义 SpinnerPopuwindow继承PopupWindow

    
    /**
     * Created by sws on 2019-04-28.
     * from:
     * describe:
     */
    
    public class SpinnerPopuwindow extends PopupWindow {
    
        private View conentView;
        private ListView listView;
        private SpinnerPopAdapter adapter;
        private Activity context;
        private TextView pop_title;
        private TextView pop_cancel;
        /**
         * @param context 上下文
         * @param string 获取到未打开列表时显示的值
         * @param list 需要显示的列表的集合
         * @param itemsOnClick listview在activity中的点击监听事件
         */
        @SuppressLint("InflateParams")
        public SpinnerPopuwindow(final Activity context, final String string, final List<String> list, AdapterView.OnItemClickListener itemsOnClick) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            this.context =context;
            conentView = inflater.inflate(R.layout.popuwindow_spinner, null);
            // 设置SelectPicPopupWindow的View
            this.setContentView(conentView);
            // 设置SelectPicPopupWindow弹出窗体的宽
            this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
            //    this.setWidth(view.getWidth());
            // 设置SelectPicPopupWindow弹出窗体的高
            this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
            // 设置SelectPicPopupWindow弹出窗体可点击
            this.setFocusable(true);
            // 刷新状态
            this.update();
            this.setOutsideTouchable(false);
            // 实例化一个ColorDrawable颜色为半透明
            ColorDrawable dw = new ColorDrawable(0000000000);
            // 点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件变化等操作
            this.setBackgroundDrawable(dw);
            this.setOnDismissListener(new OnDismissListener() {
                @Override
                public void onDismiss() {
                    darkenBackground(1f);
                }
            });
            //解决软键盘挡住弹窗问题
            this.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
            this.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    
            // 设置SelectPicPopupWindow弹出窗体动画效果
            //  this.setAnimationStyle(R.style.AnimationPreview);
    
            adapter = new SpinnerPopAdapter(context,list);
            listView = (ListView) conentView.findViewById(R.id.listView);
            listView.setOnItemClickListener(itemsOnClick);
            listView.setAdapter(adapter);
            // setAdapter是异步进行的,为了使弹窗能即时刷新,所以使用post+Runnable
            listView.post(new Runnable() {
                @Override
                public void run() {
                    //主要是为了比对未打开列表时显示的值和列表中的值进行默认选中
                    for(int j = 0;j<list.size();j++){
                        if(string.equals(list.get(j).toString())){
                            listView.setItemChecked(j, true);//listview自带的方法
                        }else {
                            listView.setItemChecked(j, false);
                        }
                    }
                }
            });
    
            pop_title = (TextView) conentView.findViewById(R.id.pop_title);
    //        pop_cancel = (TextView) conentView.findViewById(R.id.pop_cancel);
    //
    //        pop_cancel.setOnClickListener(new View.OnClickListener() {
    //            @Override
    //            public void onClick(View v) {
    //                dismiss();
    //                darkenBackground(1f);
    //            }
    //        });
        }
    
        //给下拉列表的设置标题,增加复用性
        public void setTitleText(String str){
            pop_title.setText(str);
        }
        //获取选中列表中的数据所对应的position
        public int getText(){
            return listView.getCheckedItemPosition();
        }
    
        /**
         * 显示popupWindow
         *
         * @param parent
         */
        public void showPopupWindow(View parent) {
            if (!this.isShowing()) {
                // 以下拉方式显示popupwindow
                  this.showAsDropDown(parent);
    //             this.showAsDropDown(parent,0,10);
    //            this.showAtLocation(parent, Gravity.BOTTOM|Gravity.CENTER, 0, 0);
                darkenBackground(0.9f);//弹出时让页面背景回复给原来的颜色降低透明度,让背景看起来变成灰色
            }
        }
        /**
         * 关闭popupWindow
         */
        public void dismissPopupWindow() {
            this.dismiss();
            darkenBackground(1f);//关闭时让页面背景回复为原来的颜色
    
        }
        /**
         * 改变背景颜色,主要是在PopupWindow弹出时背景变化,通过透明度设置
         */
        private void darkenBackground(Float bgcolor){
            WindowManager.LayoutParams lp = context.getWindow().getAttributes();
            lp.alpha = bgcolor;
            context.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
            context.getWindow().setAttributes(lp);
        }
    }

     本类中主要是创建一个PopupWindow,并编写他的显示、关闭,点击监听,设置标题等方法,你可以按照你的需求更改背景颜色、弹出窗体的宽高等。

    需要用到的列表布局如下 :一个简单的listview和标题TextView

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white">
        <TextView
            android:id="@+id/pop_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="6dp"
            android:gravity="center"
            android:textSize="@dimen/text14"/>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:background="@color/hui"/>
        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="#00000000"
            android:choiceMode="singleChoice"
            >
        </ListView>
    </LinearLayout>

     第二步:在要使用下拉列表的Activity中创建

     

    /** 项目类型数据*/
    private List<String> lxData;
    
    private SpinnerPopuwindow lxSpinnerPopuwindow;
    
    
    //在页面上项目类型按钮的点击监听中加一下代码
    
    type_lx = tvlx.getText().toString();
                    lxSpinnerPopuwindow = new SpinnerPopuwindow( StreetDeviceListActivity.this,type_lx,lxData,lxitemsOnClick);
    //type_lx:选择某一项后显示选中内容的TextView
                    lxSpinnerPopuwindow.showPopupWindow(llSX);//llSX是指此下拉列表要显示在那个view下边
                    lxSpinnerPopuwindow.setTitleText("项目类型");//给下拉列表设置标题

    第三步:为下拉列表设置监听

     private AdapterView.OnItemClickListener lxitemsOnClick = new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String value = lxData.get(lxSpinnerPopuwindow.getText());
                tvlx.setText(value);
                lxSpinnerPopuwindow.dismissPopupWindow();
    
               //TODO 这儿写点击某一项之后你要执行的代码
    
            }
        };

     

    展开全文
  • Android下拉列表框

    热门讨论 2014-08-03 23:11:45
    Android静态绑定下拉框数据、动态绑定下拉框数据、选择时触发的事件以及获得所选的值。博客地址http://blog.csdn.net/pfe_nova/article/details/38362193
  • 主要介绍了Android编程实现多列显示的下拉列表框Spinner功能,结合具体实例形式分析了Android多列表显示功能的相关布局操作实现技巧,需要的朋友可以参考下
  • Android 生成带图像的下拉选择框列表,最开始分别创建了两个数组,一个是所有资源图片(足球、篮球、排球)id的数组:  int[] drawableIds={R.drawable.football,R.drawable.basketball,R.drawable.volleyball};  ...
  • 1、下拉列表框(Spinner) 项目布局 &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:...

    1、下拉列表框(Spinner)

    项目布局

    <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" >
    
        <Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
              />
    
    </RelativeLayout>

    添加相应代码:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Spinner spinner = (Spinner) findViewById(R.id.spinner);
    
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item); //系统sdk里面的R文件
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            adapter.add("java");
            adapter.add(".net");
            adapter.add("php");
            
            spinner.setAdapter(adapter);
            
    
        }
    }

    2、输入内容自动完成文本框(AutoCompleteTextView)

    AutoCompleteTextView和EditText组件类似,都可以输入文本。但AutoCompleteTextView组件可以和一个字符串数组或List对象绑定,当用户输入两个及以上字符时,系统将在AutoCompleteTextView组件下方列出字符串数组中所有以输入字符开头的字符串,这一点和www.google.com的搜索框非常相似,当输入某一个要查找的字符串时,google搜索框就会列出以这个字符串开头的最热门的搜索字符串列表。

    <AutoCompleteTextView android:layout_width="fill_parent“ android:layout_height="wrap_content“
    <!–- completionThreshold 指定至少输入几个字符后才会出现自动提示功能-->
    android:completionThreshold="1“ android:id="@+id/name" />

    代码比较简单:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            String[] names = { "老张", "老方", "老毕", "李明", "李丽", "陈江", "abc", "acc" };
            AutoCompleteTextView nameText = (AutoCompleteTextView) this
                    .findViewById(R.id.name);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_dropdown_item_1line, names);
            nameText.setAdapter(adapter);
    
        }
    }

    运行项目:

    3、多次输入-内容自动完成文本框(MultiAutoCompleteTextView)

    除了AutoCompleteTextView控件外,我们还可以使用MultiAutoCompleteTextView控件来完成连续输入的功能。也就是说,当输入完一个字符串后,在该字符串后面输入一个逗号(,),在逗号前后可以有任意多个空格,然后再输入一个字符串,仍然会显示自动提示列表。
    使用MultiAutoCompleteTextView时,需要为它的setTokenizer方法指定MultiAutoCompleteTextView.CommaTokenizer类对象实例,该对象表示采用逗号作为输入多个字符串的分隔符。

    <MultiAutoCompleteTextView android:layout_width="fill_parent“ android:layout_height="wrap_content“ 
    <!– completionThreshold 指定至少输入几个字符后才会出现自动提示功能--
    > android:completionThreshold="1“ android:id="@+id/name" />

    代码如下:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            String[] names1 = { "老张", "老方", "老毕", "李明", "李丽", "陈江", "abc", "acc" };
            MultiAutoCompleteTextView nameText1 = (MultiAutoCompleteTextView) this
                    .findViewById(R.id.name1);
            ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
                    android.R.layout.simple_dropdown_item_1line, names1);
            nameText1.setAdapter(adapter1);
            nameText1.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    
        }
    
    }

    运行的效果:

    4、菜单(Menu)

    将res/menu文件夹下的main.xml文件改名为menu.xml,并添加下面的代码:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/item1"
            android:title="我是菜单1">
        </item>
        <item
            android:id="@+id/item2"
            android:title="我是菜单2">
        </item>
        <item
            android:id="@+id/item3"
            android:title="我是菜单3">
        </item>
    
    </menu>

    逻辑部分的代码如下:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // 添加条目点击事件
    
            int id = item.getItemId();
            switch (id) {
            case R.id.item1:
                Toast.makeText(this, "条目1被点击了", 0).show();
    
                break;
            case R.id.item2:
                Toast.makeText(this, "条目2被点击了", 0).show();
                break;
            case R.id.item3:
                Toast.makeText(this, "条目3被点击了", 0).show();
                break;
    
            default:
                break;
            }
    
            return super.onOptionsItemSelected(item);
        }
    
    }

    运行项目效果如下:

    展开全文
  • android下拉筛选

    2017-12-16 16:56:42
    android下拉筛选,进行了自己的一些修改,感觉灵活性还挺高的,分享出来给大家看一看
  • 主要为大家详细介绍了Android下拉列表选项,及指示箭头动画的制作代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android自定义的下拉列表框控件

    万次阅读 2017-10-20 13:49:40
    Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手...

    一、概述

    Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求,

    比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的:

     

     

     

    这个时候只有自己动手写一个了。其实实现起来不算很难,

    本文实现的方案是采用TextView +ImageView+PopupWindow的组合方案。

    先来看看我们的自己写的控件效果图吧:(源码在文章下面最后给出哈!)

     

    二、自定义下拉列表框控件的实现

    1. 自定义控件用到的布局文件和资源:

    结果框的布局页面:dropdownlist_view.xml:


     

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/compound"
        android:background="@drawable/dropdown_bg_selector" >
        
        <TextView
            android:id="@+id/text"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:paddingLeft="10dp"
            android:text="文本文字"
            android:gravity="center_vertical"
            android:textSize="14sp"
            android:padding="5dp"
            android:singleLine="true" />
        <ImageView 
            android:id="@+id/btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/text"
            android:src="@drawable/dropdown"
            android:padding="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"/>
    </RelativeLayout>
    复制代码

     

    下拉弹窗列表布局页面:dropdownlist_popupwindow.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="vertical" >
        
        <ListView
            android:id="@+id/listView"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:divider="#666666"
            android:dividerHeight="1dp"
             ></ListView>
    
    </LinearLayout>
    复制代码

    selector资源文件:

    dropdown_list_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
        <item android:drawable="@color/dropdownlist_item"/>
    </selector>

    dropdown_bg_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
        <item android:drawable="@color/dropdownlist_bg"/>
    </selector>

     

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/compound"
        android:background="@drawable/dropdown_bg_selector" >
        
        <TextView
            android:id="@+id/text"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:paddingLeft="10dp"
            android:text="文本文字"
            android:gravity="center_vertical"
            android:textSize="14sp"
            android:padding="5dp"
            android:singleLine="true" />
        <ImageView 
            android:id="@+id/btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/text"
            android:src="@drawable/dropdown"
            android:padding="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"/>
    </RelativeLayout>
    复制代码

     

    下拉弹窗列表布局页面:dropdownlist_popupwindow.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="vertical" >
        
        <ListView
            android:id="@+id/listView"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:divider="#666666"
            android:dividerHeight="1dp"
             ></ListView>
    
    </LinearLayout>
    复制代码

    selector资源文件:

    dropdown_list_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
        <item android:drawable="@color/dropdownlist_item"/>
    </selector>

    dropdown_bg_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
        <item android:drawable="@color/dropdownlist_bg"/>
    </selector>

     

     

    2. 自定义下拉列表框控件类的实现:

     

    我们采用了TextView+ImageView+PopupWindow的组合方案,所以我的自定义控件需要重写ViewGroup,由于我们已经知道了,布局方向为竖直方向,所以这里,

    我直接继承LinearLayout来写这个控件。具体实现代码如下:

    复制代码
    package com.czm.xcdropdownlistview;
    
    import java.util.ArrayList;
    
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.PopupWindow;
    import android.widget.TextView;
    
    @SuppressLint("NewApi")
    /**
     * 下拉列表框控件
     * @author caizhiming
     *
     */
    public class XCDropDownListView extends LinearLayout{
    
        private TextView editText;
        private ImageView imageView;
        private PopupWindow popupWindow = null;
        private ArrayList<String> dataList =  new ArrayList<String>();
        private View mView;
        public XCDropDownListView(Context context) {
            this(context,null);
            // TODO Auto-generated constructor stub
        }
        public XCDropDownListView(Context context, AttributeSet attrs) {
            this(context, attrs,0);
            // TODO Auto-generated constructor stub
        }
        public XCDropDownListView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            // TODO Auto-generated constructor stub
            initView();
        }
    
        public void initView(){
            String infServie = Context.LAYOUT_INFLATER_SERVICE;
            LayoutInflater layoutInflater;
            layoutInflater =  (LayoutInflater) getContext().getSystemService(infServie);
            View view  = layoutInflater.inflate(R.layout.dropdownlist_view, this,true);
            editText= (TextView)findViewById(R.id.text);
            imageView = (ImageView)findViewById(R.id.btn);
            this.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if(popupWindow == null ){
                        showPopWindow();
                    }else{
                        closePopWindow();
                    }
                }
            });
        }
        /**
         * 打开下拉列表弹窗
         */
        private void showPopWindow() {  
            // 加载popupWindow的布局文件  
            String infServie = Context.LAYOUT_INFLATER_SERVICE;
            LayoutInflater layoutInflater;
            layoutInflater =  (LayoutInflater) getContext().getSystemService(infServie);
            View contentView  = layoutInflater.inflate(R.layout.dropdownlist_popupwindow, null,false);
            ListView listView = (ListView)contentView.findViewById(R.id.listView);
            
            listView.setAdapter(new XCDropDownListAdapter(getContext(), dataList));
            popupWindow = new PopupWindow(contentView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            popupWindow.setBackgroundDrawable(getResources().getDrawable(R.color.transparent));
            popupWindow.setOutsideTouchable(true);
            popupWindow.showAsDropDown(this);
        }
        /**
         * 关闭下拉列表弹窗
         */
        private void closePopWindow(){
            popupWindow.dismiss();
            popupWindow = null;
        }
        /**
         * 设置数据
         * @param list
         */
        public void setItemsData(ArrayList<String> list){
            dataList = list;
            editText.setText(list.get(0).toString());
        }
        /**
         * 数据适配器
         * @author caizhiming
         *
         */
        class XCDropDownListAdapter extends BaseAdapter{
    
            Context mContext;
            ArrayList<String> mData;
            LayoutInflater inflater;
            public XCDropDownListAdapter(Context ctx,ArrayList<String> data){
                mContext  = ctx;
                mData = data;
                inflater = LayoutInflater.from(mContext);
            }
            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return mData.size();
            }
    
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return position;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                // TODO Auto-generated method stub
                // 自定义视图
                ListItemView listItemView = null;
                if (convertView == null) {
                    // 获取list_item布局文件的视图
                    convertView = inflater.inflate(R.layout.dropdown_list_item, null);
                    
                    listItemView = new ListItemView();
                    // 获取控件对象
                    listItemView.tv = (TextView) convertView
                            .findViewById(R.id.tv);
    
                    listItemView.layout = (LinearLayout) convertView.findViewById(R.id.layout_container);
                    // 设置控件集到convertView
                    convertView.setTag(listItemView);
                } else {
                    listItemView = (ListItemView) convertView.getTag();
                }
                
                // 设置数据
                listItemView.tv.setText(mData.get(position).toString());
                final String text = mData.get(position).toString();
                listItemView.layout.setOnClickListener(new OnClickListener() {
                    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        editText.setText(text);
                        closePopWindow();
                    }
                });
                return convertView;
            }
        
        }
        private static class ListItemView{
            TextView tv;
            LinearLayout layout;
        }
    
    }
    复制代码

     

    三、如何使用该自定义下拉列表框控件

    使用该控件和使用普通的自带的控件一样,首先需要在布局文件中引用该控件:

    复制代码
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.czm.xcdropdownlistview.MainActivity"
        tools:ignore="MergeRootFrame" >
        
        
        <com.czm.xcdropdownlistview.XCDropDownListView
            android:id="@+id/drop_down_list_view"
            android:layout_marginTop="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true" />
        
        </RelativeLayout>
    复制代码

    其次,就是在代码中使用该控件:

    复制代码
    package com.czm.xcdropdownlistview;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.os.Bundle;
    /**
     * 使用下拉列表框控件 示例
     * @author caizhiming
     *
     */
    public class MainActivity extends Activity {
    
        XCDropDownListView dropDownListView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            dropDownListView = (XCDropDownListView)findViewById(R.id.drop_down_list_view);
            ArrayList<String> list = new ArrayList<String>();
            for(int i = 0;i< 6;i++){
                list.add("下拉列表项"+(i+1));
            }
            dropDownListView.setItemsData(list);
    
        }
    
    }
    复制代码

    对了,这个控件中,我没有实现点击item项回调接口,这个可能对有些写惯了回调的可能觉得少了写什么的感觉,有兴趣的你可以自己添加相关回调操作哈,这个大家应该都会把。

    四、源码下载

    最后给出源码的下载:
    http://download.csdn.net/download/u013068887/10031736

    本文参考:
    http://www.cnblogs.com/JczmDeveloper/p/4425010.html

     

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/compound"
        android:background="@drawable/dropdown_bg_selector" >
        
        <TextView
            android:id="@+id/text"
            android:layout_width="250dp"
            android:layout_height="40dp"
            android:paddingLeft="10dp"
            android:text="文本文字"
            android:gravity="center_vertical"
            android:textSize="14sp"
            android:padding="5dp"
            android:singleLine="true" />
        <ImageView 
            android:id="@+id/btn"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_toRightOf="@+id/text"
            android:src="@drawable/dropdown"
            android:padding="5dp"
            android:layout_centerVertical="true"
            android:gravity="center"/>
    </RelativeLayout>
    复制代码

    下拉弹窗列表布局页面:dropdownlist_popupwindow.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="vertical" >
        
        <ListView
            android:id="@+id/listView"
            android:layout_width="280dp"
            android:layout_height="wrap_content"
            android:divider="#666666"
            android:dividerHeight="1dp"
             ></ListView>
    
    </LinearLayout>
    复制代码

    selector资源文件:

    dropdown_list_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
        <item android:drawable="@color/dropdownlist_item"/>
    </selector>

    dropdown_bg_selector.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
        <item android:drawable="@color/dropdownlist_bg"/>
    </selector>

     

     

    展开全文
  • 下拉列表框的右下角有一个小三角,点击这个小三角就可以展开列表框选择某一项后列表框自动收起,列表框会显示选择的一项的内容。 在activity_main.xml文件中,用Spinner标签来定义下拉列表框: 属性: android...

    列表类组件(下拉列表框Spinner)

    1. 下拉列表框:通常用于提供一系列可以选择的列表项来供用户选择。下拉列表框的右下角有一个小三角,点击这个小三角就可以展开列表框,选择某一项后列表框自动收起,列表框会显示选择的一项的内容。
      在这里插入图片描述
      在activity_main.xml文件中,用Spinner标签来定义下拉列表框:
      在这里插入图片描述
    2. 属性:
    • android:layout_width和android:layout_height :取值为wrap_content,即包裹其自身的内容。
    • android:entries :设置下拉列表框中的选项。取值为一个数组资源。
      在这里插入图片描述
      首先在res/value目录下创建一个数组资源文件:
      在这里插入图片描述
      在这里插入图片描述
      在array.xml文件中用string-array标签定义一个数组,用item标签定义数组中每一项的值:
      在这里插入图片描述
      运行后可以看到结果:
      在这里插入图片描述
    1. 使用适配器来设置下拉列边框的选项内容
      可以不使用android:entries属性,直接在Java代码中使用适配器。
      首先,给下拉列表框设置一个id,并注释掉android:entries属性:
      在这里插入图片描述
      在Java文件中进行如下操作:
    package com.example.spinnerdemo;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
        //定义一个下拉列表框
        private Spinner spinner;
        //定义一个Sting[]来存放选项内容
        private String[] type=new String[]{"全部","电影","游戏","图书"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //定义一个数组适配器。第一个参数为一个上下文对象;
            //第二个参数为android自带的下拉列表框的样式资源;
            //第三个参数为存放选项内容的Strings[]
            ArrayAdapter adapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_spinner_item,type);
            //设置下拉列表框的下拉格式
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            //获取下拉列表框
            spinner=findViewById(R.id.spinner);
            //将adapter设置为spinner的适配器
            spinner.setAdapter(adapter);
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    选择游戏:
    在这里插入图片描述
    4.在Java代码中获取用户选择的选项内容:
    在这里插入图片描述
    在这里插入图片描述
    运行结果:
    刚运行:
    在这里插入图片描述
    选择游戏:
    在这里插入图片描述

    展开全文
  • 相信大家都有遇到下拉选择这个功能,接下来我把我学习的给大家分享一下。 一、导入依赖 implementation 'com.github.arcadefire:nice-spinner:1.4.4' 二、具体应用 1、接来下就是创建一个xml布局了fragment_...
  • Android 自定义控件+下拉选择框实现

    千次阅读 2019-07-15 11:00:13
    自定义控件+下拉选择框实现 当系统自带的控件不能满足我们的需求,而我们又会经常使用到,这个时候我们就可以自定义控件。下拉框是我们在做项目中经常会需要用到的。 上图就是一个自定义的控件 点击显示下拉框进行...
  • android studio,demo,Spinner下拉菜单多选的实现,android studio3.0.1的环境下使用。
  • 该源代码展示了如何去实现下拉列表框的效果,控件Spinner
  • 安卓实现下拉列表框 【Spinner】

    千次阅读 2019-10-06 15:20:09
    下拉列表框 引言: 别人写的东西往往不能全信,照着写出bug很正常,有些东西看来还是要自己摸索啊。下拉列表,要用到Spinner控件。 步骤一: 你需要在布局中声明这个控件。 <Spinner android:entries="@array/...
  • android:layout_width ="match_parent" android:layout_height ="match_parent"> < RelativeLayout android:layout_width ="300dp" android:layout_height ="wrap_content" android:layout_marginTop ="20...
  • android下拉列表框

    千次阅读 2012-12-02 20:03:20
    这次的话就使用这个下拉列表框做一个城市和区域联动的小例子,数据的话简单起见就弄成静态的。就不先扯淡了。 1.先来看下下拉列表框的标签 android:id="@+id/city" android:prompt="@string/city_label" an
  • 具有多选功能的下拉列表框

    热门讨论 2012-07-26 11:49:00
    实现了一个可以多选的下拉列表框下拉列表是一个checkboxlist,通过用户控件实现
  • Android 下拉列表框

    2018-07-31 17:35:06
    Spinner
  • android自定义Spinner下拉菜单(下拉列表框)样式
  • 强大的Android下拉刷新支持下拉刷新、上拉加载、二级刷新、越界回弹、越界拖动,具有极强的扩展性,并集成了几十种炫酷的Header和 Footer。 支持横向刷新 支持多点触摸 支持淘宝二楼和二级刷新 支持嵌套多层的视图...
  • android 通用的下拉选择框

    千次阅读 2018-03-15 15:09:41
    * 当前类只能用于界面只有一个下拉选择框 * 使用时需要判断选择框是否是闭合状态 * 需要传入下拉列表数据,主线程,显示控件 popup窗口 private PopupWindow typeSelectPopup; 使用isShowing()检查popup窗口...
  • Android自定义下拉选择框

    千次阅读 2017-01-30 15:57:38
    一、效果:本Demo主要是一个自定义的下拉选择框,下拉框可以显示数据,也可以删除数据,类似QQ登陆的EditText。二、编码(1)主布局相对比较简单,用一个EditText和ImageButton组合而成,而下拉选择列表是用ListView。 ...
  • Android下拉列表 采用组件设置的形式添加下拉列表 我们要先添加选项,也就是我们列表中要选择的东西。 定义在values文件夹中的strings.xml中. <string-array name="spinner_data"> <item>山西</...
  • Android 单选按钮 下拉列表框

    千次阅读 2020-04-01 20:33:20
    android:drawablePadding="20dp" //用来设置图标和文本间的距离 /> 效果图: 下拉列表框:Spinner 1.作用:选择 2.显示效果: android:spinnerMode=“dropdown” 下拉列表dropdown,弹出对话框dialog 3.类及继承关系...
  • 自定义下拉选择框,简单易用,自带默认动画,支持各个方向弹出,支持多种注入数据方式
  • Android中Spinner下拉选项
  • Android 下拉列表 可手动输入,精简过的,很简单,直接可以使用的.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,357
精华内容 8,142
关键字:

android下拉选择框