精华内容
下载资源
问答
  • Android自定义下拉列表框控件源码

    热门讨论 2015-04-14 15:18:03
    基于android 4.4 开发的 自定义android 下拉列表框控件 源码,有需要的欢迎下载哈
  • using Android.App; using Android.OS; using Android.Widget; namespace SpinnerDemo { [Activity(Label = @string/ApplicationName, MainLauncher = true, Icon = @drawable/icon)] public class MainActivity :...
  • 主要为大家详细介绍了Android下拉列表选项,及指示箭头动画的制作代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Android RecyclerView实现下拉列表功能,下拉展开更多选项,具有一定的实用性,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Android编程实现多列显示的下拉列表框Spinner功能,结合具体实例形式分析了Android多列表显示功能的相关布局操作实现技巧,需要的朋友可以参考下
  • 一、仿微信下拉列表布局pop_dialog.xml <?xml version=1.0 encoding=UTF-8?> <RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width=wrap_content
  • android自定义Spinner下拉菜单(下拉列表框)样式
  • Spinner是一个列表选择,会在用户选择后,展示一个列表供用户进行选择。下面通过本文给大家实例详解android中使用Spinner实现下拉列表功能,一起看看吧
  • 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>

     

     

    展开全文
  • android提供的列表选择(Spinner)相当于web端用户注册时的选择下拉框,比如注册候选择省份城市等。这篇文章主要介绍了Android组件实现列表选择功能,需要的朋友可以参考下
  • Android 单选按钮 下拉列表框

    千次阅读 2020-04-01 20:33:20
    android:drawablePadding="20dp" //用来设置图标和文本间的距离 /> 效果图: 下拉列表框:Spinner 1.作用:选择 2.显示效果: android:spinnerMode=“dropdown” 下拉列表dropdown,弹出对话框dialog 3.类及继承关系...

    单选按钮:


    1.特点:

    • 单选按钮一组是互斥的,
    • 使用RadioGroup实现互斥

    2.RadioGroup继承LinnerLayout: 所以可以使用linearLayout的相关属性,
    例如:
    orientation,,,,
    RadioGroup默认方向是垂直。LinearLayout默认水平方向的。

    3.对于单选按钮的事件监听,
    通常加载到RadioGroup,
    接口:RadioGroup.OnCheckedChangeListener
    实现接口的方法

     radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
    //                第一个参数是按钮组对象,,第二个参数被选择的单选按钮的id
                }
            });
    

    4.开关按钮:Switch控件

    • 类名Swith
    • 状态,打开和关闭,默认情况下,有默认的样式,可以经过一些属性进行修改、
    • 常用的属性
    • 开关的显示效果,由thumb滑块和track轨迹,,可以用select shape来设计样子。
     <!-- 开关按钮-->
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="开关按钮"  //开关按钮前面的文字信息
            
            android:showText="true" //开关按钮上的 off on 提示信息
            android:textOn="开"  //当按钮为开,,,按钮图标提示开
            android:textOff="关"  //当按钮为开,,,按钮图标提示关
            />
    

    5.按钮图标:

    • andrord:button 图片要求不高 跟文字间距也不要求的时候使用
    • android :background 用于较大的图标显示
    • android:drawableleft 使用的时候得把默认的单选按钮图标隐藏,图标和文字之间有间隔要求的时候可以使用
     <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/rd_1"
                android:text="选项11"
                android:button="@null"
                android:drawableLeft="@drawable/logo"
               android:drawablePadding="20dp" //用来设置图标和文本间的距离
            />
    

    效果图:
    在这里插入图片描述


    下拉列表框:Spinner


    1.作用:选择
    2.显示效果: android:spinnerMode=“dropdown” 下拉列表dropdown,弹出对话框dialog
    3.类及继承关系 Spinner直接父类AbsSpinner 间接父类AdapterView ,,, Adapter适配器
    4.怎么把数据放进去:

    • 静态方法:将下拉列表中内容放在资源文件string中,
    <string-array name="content">
        <item>北京</item>
        <item>上海</item>
        <item>南京</item>
        <item>广州</item>
    </string-array>
    

    在MainActivity.xml文件中写

    spinnerMode写下拉列表框的形式dropdown,,,,对话框形式为dialog
    android:entries="@array/content" string文件中定义过的数组

     <Spinner
            android:id="@+id/spinner"
            android:spinnerMode="dropdown"
            android:entries="@array/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </Spinner>
    
    • 动态的方式:
    • 界面中放好Spinner控件,
    • 准备好数据,,可以是数组,也可以是集合ArrayList<Stirng>
    • 把数据放到控件上去,需要使用适配器ArrayAdept

    MainActivity.xml文件中:

     <Spinner
            android:id="@+id/spinner"
            android:spinnerMode="dropdown"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </Spinner>
    

    在java文件中

    //定义数组
            String[] ctype=new String[]{"+1","+2","+3","+4","+5"};
    //适配器,,第一个参数this上下文对象,第二个参数提供布局 自带的布局,,第三个是数组对象
            ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ctype);
    
            spinner =(Spinner)findViewById(R.id.spinner);
            //给spinner添加适配器
            spinner.setAdapter(adapter);
    
    

    在这里插入图片描述

    理解适配器:

    列表控件:
    两部分,
    显示Spinner-----------外盒
    数据---------------------内容
    适配器就是把数据包装好,,适配器起到包数据的作用。


    适配器下拉列表,,,添加不同于默认的显示效果



    下拉列表事件监听:


    当列表项被选中的时候触发什么事件:
    在java文件中,给spinner下拉框对象添加选择事件:
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {,
    里面有两个方法:一个是被选中的,,一个是没被选
    ,,,}

    package com.example.syx.spinner;
    
    import android.annotation.TargetApi;
    import android.os.Build;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity{
    
        private Spinner spinner;
        private ArrayAdapter<String> adapter;
    
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            spinner =(Spinner)findViewById(R.id.spinner);
    
    
            String[] arr=new String[]{"山东","江苏","浙江","河北"};
            adapter = new ArrayAdapter(this,R.layout.spinner_item,arr);
    
            adapter.setDropDownViewResource(R.layout.spinner_item_one);
            spinner.setDropDownVerticalOffset(100);
            //spinner.setDropDownWidth(800);
    
            spinner.setAdapter(adapter);
    
     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                  //第一个参数,,,当前选中的spinner对象,
                  //第三个,position 选中列表项当前所在的位置,position能够拿到列表项的额位置,也就相当于定义的spinner 显示内容的数组位置,,,
                  //第四个参数id,选择选中参数所在的行
       
    
    Toast.makeText(MainActivity.this,"你选择的区号是:"+arr[position], Toast.LENGTH_SHORT).show();
    
    
               
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
                }
            });
    	}
    
    
    }
    
    
    展开全文
  • 该源代码展示了如何去实现下拉列表框的效果,控件Spinner
  • 主要介绍了Android仿美团淘宝实现多级下拉列表菜单功能,非常不错,具有参考借鉴价值,需要的朋友参考下
  • Android 下拉列表 可手动输入,精简过的,很简单,直接可以使用的.
  • android下拉筛选

    2017-12-16 16:56:42
    android下拉筛选,进行了自己的一些修改,感觉灵活性还挺高的,分享出来给大家看一看
  • Android 下拉列表Spinner

    2021-06-03 03:37:40
    在UI中经常会使用到下拉列表,在android控件中有两个下拉列表控件:SpinnerAppCompatSpinner 兼容低版本,在高版本中才能使用的方法换了V7下的Spinner后可以兼容到2.1,推荐使用这个。使用步骤:在布局中添加Spinner...

    在UI中经常会使用到下拉列表,在android控件中有两个下拉列表控件:

    Spinner

    AppCompatSpinner 兼容低版本,在高版本中才能使用的方法换了V7下的Spinner后可以兼容到2.1,推荐使用这个。

    使用步骤:

    在布局中添加Spinner

    设置数据源

    设置显示的主题

    添加点击的响应事件

    在xml中添加控件的使用:

    android:id="@+id/achievement_spinner_acs"

    style="@style/spinner"

    android:minHeight="45dip"

    android:minWidth="140dip"

    android:padding="@dimen/padding_size_two"

    android:spinnerMode="dropdown"

    android:theme="@style/spinnerHead"

    app:layout_constraintTop_toBottomOf="@+id/achievement_title_view" />

    主题:

    @color/colorSpinnerText

    14sp

    wrap_content

    wrap_content

    ?attr/actionBarSize

    @color/colorWhite

    @style/spinnerListStyle

    @style/itemSpinnerStyle

    #c1bdbd

    1dp

    @color/colorWhite

    16sp

    这些都没有达到我要的效果:

    mSpinner = findViewById(R.id.achievement_spinner_acs) as AppCompatSpinner

    val mData = ArrayList()

    mData.add("全部")

    mData.add("已提货")

    mData.add("线下")

    mData.add("门店")

    val adapter = ArrayAdapter(mContext!!, android.R.layout.simple_spinner_item, mData)

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)

    mSpinner?.adapter = adapter

    mSpinner?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {

    override fun onItemSelected(parent: AdapterView, view: View, position: Int, id: Long) {

    //修改了字体的颜色,大小最好不要在这里设置了

    val tv = view as TextView

    tv.setTextColor(resources.getColor(R.color.colorSpinnerText))

    // tv.setTextSize(12.0f)

    }

    override fun onNothingSelected(parent: AdapterView) {

    }

    }

    mSpinner?.setSelection(0)

    属性说明:

    mSpinner.setPopupBackgroundResource(R.drawable.back);//popUp显示的背景颜色

    mSpinner.setBackgroundResource(R.drawable.back); //显示的背景颜色

    android:entries // 传入的是values文件夹下的arrayx.xml内的数据

    android:spinnerMode //显示模式有popmenu和dialog两种

    android:prompt //当显示模式为dialog时生效,作用为显示dialog的标题内容

    7d1094a38597?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    其他属性

    展开全文
  • Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用,不过我们还是可以通过定义xml的方式来改变下拉菜单的样式。在layout目录下新建一个xml文件,名字随便(我这里叫myspinner.xml)。在这个文件里面...

    在Android中Spinner就是下拉菜单,它相当于HTML中的标签。

    Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用,不过我们还是可以通过定义xml的方式来改变下拉菜单的样式。

    在layout目录下新建一个xml文件,名字随便(我这里叫myspinner.xml)。在这个文件里面可以定义下拉菜单的样式

    我们这里采用TextView来实现

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/text1"

    android:layout_width="wrap_content"

    android:layout_height="24sp"

    android:singleLine="true"

    style="?android:attr/spinnerDropDownItemStyle" />

    在Activity中我们可以这样调用

    private static final String[] countriesStr={"","","",""}

    mySpinner = (Spinner) findViewById(R.id.mySpinner);

    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, countriesStr);

    adapter.setDropDownViewResource(R.layout.myspinner_dropdown);

    mySpinner.setAdapter(adapter);

    利用自定义的xml我们就可以很灵活的来改变下拉菜单的样式。

    另外andorid也提供了两种基本的样式

    android.R.layout.simple_spinner_item:TextView的下拉菜单

    android.R.layout.simple_spinner_dropdown_item:右边带有radio的下拉菜单

    ============

    方法2:

    自定义下拉菜单 -------- Spinner

    import java.util.ArrayList;

    import java.util.List;

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.MotionEvent;

    import android.view.View;

    import android.view.animation.Animation;

    import android.view.animation.AnimationUtils;

    import android.widget.AdapterView;

    import android.widget.ArrayAdapter;

    import android.widget.Button;

    import android.widget.EditText;

    import android.widget.Spinner;

    import android.widget.TextView;

    import android.widget.Toast;

    public class SpinnerDrop extends Activity {

    /** Called when the activity is first created. */

    private List cityList;

    private Spinner sp;

    private int pos;

    //private Animation animation;

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    cityList= new ArrayList();//初始化一个city的String arraylist

    countryList.add("长沙");

    countryList.add("北京");

    countryList.add("邵阳");

    pos=0;//标记选择的位置

    sp = (Spinner)findViewById(R.id.Spinner01);

    ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,cityList);

    sp.setAdapter(adapter);//通过setAdapter()来读取ArrayAdapter里的数据

    sp.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){//下拉列表的选择事件

    public void onItemSelected(AdapterView> parent, View view,

    int position, long id) {

    pos = position;//标记选择的位置

    TextView tv = (TextView)findViewById(R.id.xs);

    tv.setText("selected:"+cityList.get(position).toString());//显示选择的内容

    parent.setVisibility(View.VISIBLE);设置下拉列表的显示状态

    }

    public void onNothingSelected(AdapterView> parent) {

    // TODO Auto-generated method stub

    }

    });

    Button add = (Button)findViewById(R.id.add);//添加一个下拉项

    add.setOnClickListener(new Button.OnClickListener(){

    public void onClick(View v) {

    // TODO Auto-generated method stub

    EditText et = (EditText)findViewById(R.id.EditText01);

    String newstr = et.getText().toString();

    cityList.add(newstr);

    ArrayAdapter adapter = new ArrayAdapter(SpinnerDrop.this,android.R.layout.simple_spinner_item,cityList);

    sp.setAdapter(adapter);//添加数据后重新设置ArrayAdapter并加载进去

    et.setText("");

    Toast.makeText(SpinnerDrop.this, "添加成功", Toast.LENGTH_LONG).show();//浮框提示添加成功

    }

    });

    Button del = (Button)findViewById(R.id.del);//删除下拉项

    del.setOnClickListener(new Button.OnClickListener(){

    public void onClick(View v) {

    cityList.remove(pos);

    ArrayAdapter adapter = new ArrayAdapter(SpinnerDrop.this,android.R.layout.simple_spinner_item,cityList);

    sp.setAdapter(adapter);

    Toast.makeText(SpinnerDrop.this, "删除成功", Toast.LENGTH_LONG).show();

    }

    });

    }

    }0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 主要介绍了android studio 的下拉菜单Spinner使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • android下拉列表框

    千次阅读 2012-12-02 20:03:20
    这次的话就使用这个下拉列表框做一个城市和区域联动的小例子,数据的话简单起见就弄成静态的。就不先扯淡了。 1.先来看下下拉列表框的标签 android:id="@+id/city" android:prompt="@string/city_label" an
  • package ...import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Auto...
  • 本篇文章主要介绍了Android自定义单选多选下拉列表的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android下拉列表框使用

    千次阅读 2014-05-11 17:19:45
    这次的话就使用这个下拉列表框做一个城市和区域联动的小例子,数据的话简单起见就弄成静态的。就不先扯淡了。 1.先来看下下拉列表框的标签 1 Spinner 2  android:...
  • Android下拉列表框

    热门讨论 2014-08-03 23:11:45
    Android静态绑定下拉框数据、动态绑定下拉框数据、选择时触发的事件以及获得所选的值。博客地址http://blog.csdn.net/pfe_nova/article/details/38362193
  • 列表类组件(下拉列表框Spinner) 下拉列表框:通常用于提供一系列可以选择的列表项来供用户选择。下拉列表框的右下角有一个小三角,点击这个小三角就可以展开列表框,选择某一项后列表框自动收起,列表框会显示选择...
  • 软件介绍一款可以在android上实现类似window上的下拉效果的组件,并且可以实现文本输入。效果演示:使用方法:在布局文件配置:android:id="@+id/drop_edit"android:layout_width="200dip"android:layout_height=...
  • 1、下拉列表框(Spinner) 项目布局 &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,950
精华内容 6,380
关键字:

android里的下拉列表框