开发中仿IOS三级菜单,开源项目Android-PickerView实用自定义数据封装使用实例

DataPicker的详细讲解 1.DataPicker的简介        DataPicker是一款日期选择控件,当然github上已有开源;今天借花献佛,我就跟大家讲讲DataPicker。在项目中的个人中心一般都要设置出生年月,那么DataPicker将是最好的选择,莫激动,先看看效果图: 2.DataPicker的使用, 1.引用第三方库: compile 'cn.aigestudio.datepi 阅读详情
compile 'com.contrarywind:Android-PickerView:3.2.7' 
androidStudio依赖,Eclipse可自行在github上搜索
Android-PickerView项目添加依赖 现git地址https://github.com/Bigkoo/Android-PickerView 下面给出项目中自定义数据的联动菜单实现

 

 


二级菜单封装

 

public class LocationPickerShowerLocal {
    Context context;
    private ArrayList<String> options1Items = new ArrayList<>();
    private ArrayList<ArrayList<String>> options2Items = new ArrayList<>();
    static TextView tv;
    LocalAreaBean localAreaBean;

    OnLocalOptionsSelectListener mListener;
    public LocationPickerShowerLocal( Context context, String data,OnLocalOptionsSelectListener mListener) {
        this.mListener = mListener;
        this.context = context;
        initJsonData(data);

    }
    public interface OnLocalOptionsSelectListener {
        void getLocalAreaCode(String text, String areaCode);
    }
    public void show() {
        showPickerView();
    }

    private void showPickerView() {
        int color = context.getResources().getColor(R.color.maincolor);
        OptionsPickerView pvOptions = new OptionsPickerView.Builder(context, new OptionsPickerView.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                //返回的分别是三个级别的选中位置
                String text = options1Items.get(options1) +
                        options2Items.get(options1).get(options2);
                mListener.getLocalAreaCode(text,localAreaBean.getData().get(options1).getTOWN().get(options2).getAREA_CODE());
            }
        }).setTitleText("")
                .setDividerColor(color)
                .setTextColorCenter(color)
                .setContentTextSize(21)
                .setCancelColor(color)
                .setSubmitColor(color)
                .setSubmitText("完成")
                .setOutSideCancelable(true)
                .build();
        pvOptions.setPicker(options1Items, options2Items);//二级选择器*/
        pvOptions.show();
    }


    private void initJsonData(String data) {   //解析数据
        /**
         * 添加省份数据
         *
         * 注意:如果是添加的JavaBean实体,则实体类需要实现 IPickerViewData 接口,
         * PickerView会通过getPickerViewText方法获取字符串显示出来。
         */
        Gson gson = new Gson();
        localAreaBean = gson.fromJson(data, LocalAreaBean.class);
        ArrayList<LocalAreaBean.DataBean> dataBean = (ArrayList<LocalAreaBean.DataBean>)localAreaBean.getData();
//        options1Items = dataBean;

        for (int i = 0; i < dataBean.size(); i++) {//遍历省份
            options1Items.add(dataBean.get(i).getAREA_NAME());
            ArrayList<String> CityList = new ArrayList<>();//该省的城市列表(第二级)

            for (int c = 0; c < dataBean.get(i).getTOWN().size(); c++) {//遍历该省份的所有城市
                String CityName = dataBean.get(i).getTOWN().get(c).getAREA_NAME();
                CityList.add(CityName);//添加城市
            }

            /**
             * 添加城市数据
             */
            options2Items.add(CityList);


        }
    }



}
三级菜单封装
public class LocationPickerShowerState { Context context;  private ArrayList<String> options1Items = new ArrayList<>();  private ArrayList<ArrayList<String>> options2Items = new ArrayList<>();  private ArrayList<ArrayList<ArrayList<String>>> options3Items = new ArrayList<>();  OnOptionsSelectListener mListener;   public LocationPickerShowerState(Context context, String data, OnOptionsSelectListener mListener) { this.mListener = mListener;  this.context = context;  initJsonData(data);   } public void show() { showPickerView();  } public interface OnOptionsSelectListener { void getAreaCode(String text, String areaCode);  } String areaCode = "";   private void showPickerView() { int color = context.getResources().getColor(R.color.maincolor);  OptionsPickerView pvOptions = new OptionsPickerView.Builder(context, new OptionsPickerView.OnOptionsSelectListener() { @Override  public void onOptionsSelect(int options1, int options2, int options3, View v) { //返回的分别是三个级别的选中位置  String text = options1Items.get(options1) + options2Items.get(options1).get(options2) + options3Items.get(options1).get(options2).get(options3);  mListener.getAreaCode(text, stateAreaBean.getData().get(options1).getCITY().get(options2).getCOUNTY().get(options3).getAREA_CODE());  } }).setTitleText("") .setDividerColor(color) .setTextColorCenter(color) .setContentTextSize(21) .setCancelColor(color) .setSubmitColor(color) .setSubmitText("完成") .setOutSideCancelable(true) .build();  /*pvOptions.setPicker(options1Items);//一级选择器  pvOptions.setPicker(options1Items, options2Items);//二级选择器*/  pvOptions.setPicker(options1Items, options2Items, options3Items);//三级选择器  pvOptions.show();  } StateAreaBean stateAreaBean;   private void initJsonData(String data) { //解析数据  /**  * 添加省份数据  *  * 注意:如果是添加的JavaBean实体,则实体类需要实现 IPickerViewData 接口,  * PickerView会通过getPickerViewText方法获取字符串显示出来。  */  Gson gson = new Gson();  stateAreaBean = gson.fromJson(data, StateAreaBean.class);  ArrayList<StateAreaBean.DataBean> dataBean = (ArrayList<StateAreaBean.DataBean>) stateAreaBean.getData(); // options1Items = dataBean;   for (int i = 0; i < dataBean.size(); i++) {//遍历省份  options1Items.add(dataBean.get(i).getAREA_NAME());  ArrayList<String> CityList = new ArrayList<>();//该省的城市列表(第二级)  ArrayList<ArrayList<String>> Province_AreaList = new ArrayList<>();//该省的所有地区列表(第三极)   for (int c = 0; c < dataBean.get(i).getCITY().size(); c++) {//遍历该省份的所有城市  String CityName = dataBean.get(i).getCITY().get(c).getAREA_NAME();  CityList.add(CityName);//添加城市   ArrayList<String> City_AreaList = new ArrayList<>();//该城市的所有地区列表   //如果无地区数据,建议添加空字符串,防止数据为null 导致三个选项长度不匹配造成崩溃  if (dataBean.get(i).getCITY().get(c).getAREA_NAME() == null  || dataBean.get(i).getCITY().get(c).getCOUNTY().size() == 0) { City_AreaList.add("");  } else { for (int d = 0; d < dataBean.get(i).getCITY().get(c).getCOUNTY().size(); d++) {//该城市对应地区所有数据  String AreaName = dataBean.get(i).getCITY().get(c).getCOUNTY().get(d).getAREA_NAME();   City_AreaList.add(AreaName);//添加该城市所有地区数据  } } Province_AreaList.add(City_AreaList);//添加该省所有地区数据  } /**  * 添加城市数据  */  options2Items.add(CityList);   /**  * 添加地区数据  */  options3Items.add(Province_AreaList);  } } }

三级时间菜单封装
 

public class BirthdayPickerShower {
    private TimePickerView pvTime;
    TextView tv;
    Context context;

    public BirthdayPickerShower(TextView textView, Context context) {
        tv = textView;
        this.context = context;
        initTimePicker();
    }

    public  void show() {
        pvTime.show(tv);
    }

    private void initTimePicker() {
        //控制时间范围(如果不设置范围,则使用默认时间1900-2100年,此段代码可注释)
        //因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        startDate.set(1917, 0, 23);
        Calendar endDate = Calendar.getInstance();
        endDate.set(2018, 11, 28);
        int color = context.getResources().getColor(R.color.maincolor);

        //时间选择器
        pvTime = new TimePickerView.Builder(context, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {//选中事件回调
                // 这里回调过来的v,就是show()方法里面所添加的 View 参数,如果show的时候没有添加参数,v则为null
                TextView view = (TextView) v;
                view.setText(getTime(date));
            }
        })
                //年月日时分秒 的显示与否,不设置则默认全部显示
                .setType(new boolean[]{true, true, true, false, false, false})
                .setLabel("", "", "", "", "", "")
                .isCenterLabel(false)
                .setDividerColor(color)
                .setTextColorCenter(color)
                .setCancelColor(color)
                .setSubmitColor(color)
                .setSubmitText("完成")
                .setContentSize(21)
                .setDate(selectedDate)
                .setRangDate(startDate, endDate)
                .setDecorView(null)
                .build();
    }

    private String getTime(Date date) {//可根据需要自行截取数据显示
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        return format.format(date);
    }

}

实体bean,


 
如果不需要标题不需要实现IPickerViewData ,我这里也没好好实现 因为发现我的效果不需要标题

 

public class LocalAreaBean implements IPickerViewData {
    // 实现 IPickerViewData 接口,
    // 这个用来显示在PickerView上面的字符串,
    // PickerView会通过IPickerViewData获取getPickerViewText方法显示出来。
    @Override
    public String getPickerViewText() {
        return this.name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * resCode : 000
     * resMsg : 请求成功!~
     * data : [{"AREA_NAME":"巴州镇","TOWN":[{"AREA_CODE":"632122001001","AREA_NAME":"巴州二村村委会"},{"AREA_CODE":"632122001002","AREA_NAME":"巴州一村村委会"},{"AREA_CODE":"632122001004","AREA_NAME":"大焦土村村委会"},{"AREA_CODE":"632122001003","AREA_NAME":"巴州垣村村委会"},{"AREA_CODE":"632122001010","AREA_NAME":"祁家村村委会"},{"AREA_CODE":"632122001018","AREA_NAME":"阳山村村委会"}]}]
     */

    private String name;
    private String resCode;
    private String resMsg;
    private List<DataBean> data;


    public String getResCode() {
        return resCode;
    }

    public void setResCode(String resCode) {
        this.resCode = resCode;
    }

    public String getResMsg() {
        return resMsg;
    }

    public void setResMsg(String resMsg) {
        this.resMsg = resMsg;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * AREA_NAME : 巴州镇
         * TOWN : [{"AREA_CODE":"632122001001","AREA_NAME":"巴州二村村委会"},{"AREA_CODE":"632122001002","AREA_NAME":"巴州一村村委会"},{"AREA_CODE":"632122001004","AREA_NAME":"大焦土村村委会"},{"AREA_CODE":"632122001003","AREA_NAME":"巴州垣村村委会"},{"AREA_CODE":"632122001010","AREA_NAME":"祁家村村委会"},{"AREA_CODE":"632122001018","AREA_NAME":"阳山村村委会"}]
         */

        private String AREA_NAME;
        private List<TOWNBean> TOWN;

        public String getAREA_NAME() {
            return AREA_NAME;
        }

        public void setAREA_NAME(String AREA_NAME) {
            this.AREA_NAME = AREA_NAME;
        }

        public List<TOWNBean> getTOWN() {
            return TOWN;
        }

        public void setTOWN(List<TOWNBean> TOWN) {
            this.TOWN = TOWN;
        }

        public static class TOWNBean {
            /**
             * AREA_CODE : 632122001001
             * AREA_NAME : 巴州二村村委会
             */

            private String AREA_CODE;
            private String AREA_NAME;

            public String getAREA_CODE() {
                return AREA_CODE;
            }

            public void setAREA_CODE(String AREA_CODE) {
                this.AREA_CODE = AREA_CODE;
            }

            public String getAREA_NAME() {
                return AREA_NAME;
            }

            public void setAREA_NAME(String AREA_NAME) {
                this.AREA_NAME = AREA_NAME;
            }
        }
    }
}

 

public class StateAreaBean { /**  * resCode : 000  * resMsg : 请求成功!~  * data : [{"CITY":[{"AREA_NAME":"海东市","AREA_CODE":"632100000000","COUNTY":[{"AREA_CODE":"632122000000","AREA_NAME":"民和回族土族自治县"},{"AREA_CODE":"632121000000","AREA_NAME":"平安区"},{"AREA_CODE":"632128000000","AREA_NAME":"循化撒拉族自治县"},{"AREA_CODE":"632127000000","AREA_NAME":"化隆回族自治县"},{"AREA_CODE":"632126000000","AREA_NAME":"互助土族自治县"},{"AREA_CODE":"632123000000","AREA_NAME":"乐都区"}]}],"AREA_NAME":"青海省","AREA_CODE":"630000000000"}]  */   private String resCode;  private String resMsg;  private List<DataBean> data;   public String getResCode() { return resCode;  } public void setResCode(String resCode) { this.resCode = resCode;  } public String getResMsg() { return resMsg;  } public void setResMsg(String resMsg) { this.resMsg = resMsg;  } public List<DataBean> getData() { return data;  } public void setData(List<DataBean> data) { this.data = data;  } public static class DataBean { /**  * CITY : [{"AREA_NAME":"海东市","AREA_CODE":"632100000000","COUNTY":[{"AREA_CODE":"632122000000","AREA_NAME":"民和回族土族自治县"},{"AREA_CODE":"632121000000","AREA_NAME":"平安区"},{"AREA_CODE":"632128000000","AREA_NAME":"循化撒拉族自治县"},{"AREA_CODE":"632127000000","AREA_NAME":"化隆回族自治县"},{"AREA_CODE":"632126000000","AREA_NAME":"互助土族自治县"},{"AREA_CODE":"632123000000","AREA_NAME":"乐都区"}]}]  * AREA_NAME : 青海省  * AREA_CODE : 630000000000  */   private String AREA_NAME;  private String AREA_CODE;  private List<CITYBean> CITY;   public String getAREA_NAME() { return AREA_NAME;  } public void setAREA_NAME(String AREA_NAME) { this.AREA_NAME = AREA_NAME;  } public String getAREA_CODE() { return AREA_CODE;  } public void setAREA_CODE(String AREA_CODE) { this.AREA_CODE = AREA_CODE;  } public List<CITYBean> getCITY() { return CITY;  } public void setCITY(List<CITYBean> CITY) { this.CITY = CITY;  } public static class CITYBean { /**  * AREA_NAME : 海东市  * AREA_CODE : 632100000000  * COUNTY : [{"AREA_CODE":"632122000000","AREA_NAME":"民和回族土族自治县"},{"AREA_CODE":"632121000000","AREA_NAME":"平安区"},{"AREA_CODE":"632128000000","AREA_NAME":"循化撒拉族自治县"},{"AREA_CODE":"632127000000","AREA_NAME":"化隆回族自治县"},{"AREA_CODE":"632126000000","AREA_NAME":"互助土族自治县"},{"AREA_CODE":"632123000000","AREA_NAME":"乐都区"}]  */   private String AREA_NAME;  private String AREA_CODE;  private List<COUNTYBean> COUNTY;   public String getAREA_NAME() { return AREA_NAME;  } public void setAREA_NAME(String AREA_NAME) { this.AREA_NAME = AREA_NAME;  } public String getAREA_CODE() { return AREA_CODE;  } public void setAREA_CODE(String AREA_CODE) { this.AREA_CODE = AREA_CODE;  } public List<COUNTYBean> getCOUNTY() { return COUNTY;  } public void setCOUNTY(List<COUNTYBean> COUNTY) { this.COUNTY = COUNTY;  } public static class COUNTYBean { /**  * AREA_CODE : 632122000000  * AREA_NAME : 民和回族土族自治县  */   private String AREA_CODE;  private String AREA_NAME;   public String getAREA_CODE() { return AREA_CODE;  } public void setAREA_CODE(String AREA_CODE) { this.AREA_CODE = AREA_CODE;  } public String getAREA_NAME() { return AREA_NAME;  } public void setAREA_NAME(String AREA_NAME) { this.AREA_NAME = AREA_NAME;  } } } } }


使用
1.实现接口

 

public class VerificationIdentityActivity extends BaseActivity implements LocationPickerShowerState.OnOptionsSelectListener, LocationPickerShowerLocal.OnLocalOptionsSelectListener

 


@Override
public void getAreaCode(String text, String areaCode) {
    countryText = text;
    liveDistrictTv.setText(countryText);
    countyCode = areaCode;
}

/**
 * 现居村社选择完成回调方法
 */
@Override
public void getLocalAreaCode(String text, String areaCode) {
    localText = text;
    liveVillageTv.setText(localText);
    localCode = areaCode;
}


2.显示

LocationPickerShowerState locationPickerShowerState;
LocationPickerShowerLocal locationPickerShowerLocal;
Handler mHandler = new Handler(new Handler.Callback() { @Override  public boolean handleMessage(Message msg) { switch (msg.what) { case STATE: locationPickerShowerState.show();  break;  case Local: locationPickerShowerLocal.show();  break;   } return false;  } });

 

 

 

 

 

 

 

ios-纯代码实现多级菜单下拉选项.zip 由tableview实现 点击cell时获取下一级菜单,可以无限级下拉 立即下载

相关推荐

使用uniapp中picker-view封装底部选择弹框选择器,解决微信小程序中不可自定义样式问题

使用uniapp制作微信小程序时候,需要一个城市选择框,但是微信中的弹框样式不可自定义,出现了与项目主题样式不一致问题,于是使用uniapp中picker-view封装底部选择弹框选择器,实现支持自定义确定和取消按钮颜色字体大小等功能,解决微信小程序中不可自定义样式问题,

Android 时间选择器 PickerView,的详细使用

一、优点 1.可扩展性很强 2.三级联动 3.单项选择 4.条件 选择 二、项目下载地址demo及文档:传送门在这哦 三、效果图 四、使用步骤 1.添加Jcenter仓库 Gradle依赖: compile 'com.con...

潇潇 7万+

iOS 三级下拉菜单功能实现

前言 App 常用控件 — 多级下拉菜单, 如团购类, 房屋类, 对数据进行筛选. 有一级, 二级, 三级, 再多就不会以这种样式,呈现给用户了. 作者就简单聊一下 多级下拉菜单 一 目标 默认显示一个 TableView, 点击数据后, 添加第二个TableView, 并实现大小变化 第二次打开下拉菜单. 保存上次选中数据 二 菜单控件DropMenuView .h文件 #import @class DropMenuView; @protocol DropMenuViewDelegate -(void)dropMenuVie

Android日期时间选择器

一,build.gradle 引用 implementation "com.contrarywind:Android-PickerView:3.2.7" 二,layout布局文件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="请选择日期时间" android:id="@+id/dat

知识搬运工,资料任你拿,包括书籍、电影、电视剧、网站、软件等,VX公人人人号:向前书局 3574

Excel数据清洗实战:8个必学函数搞定90%的脏数据问题(附案例)

本文通过一个完整的销售数据清洗案例,详细讲解了如何组合使用TRIM、CLEAN、SUBSTITUTE等8个核心Excel函数,构建自动化清洗流水线,高效解决日常办公中90%的脏数据问题,从而将时间留给更有价值的分析工作。

weixin_29215391的博客 583

别再只调API了!深度拆解Dify文件上传的两种传参方式(sys.file vs. inputs.upload_file)

本文深度解析Dify平台文件上传的两种传参方式——sys.file与inputs.upload_file,详细对比其设计原理、技术实现及适用场景。通过代码示例和性能分析,帮助开发者在本地大模型应用中做出精准技术选型,提升文件处理效率与系统稳定性。

weixin_29063979的博客 267

三级联动的区域选择器 iOS组件

  在iOS开发中,多级联动选择器非常常见,一般用于条件筛选,区域选择等。   实现了一个找房 APP 的筛选功能,效果如下:      代码如下:https://github.com/zhangtibin/ConditionFilter 转载于:https://www.cnblogs.com/ZachRobin/p/9329719.html...

454

零基础玩转NILM:用nilmtk提取UKDALE电器数据的保姆级教程

本文为零基础用户提供了一份详细的NILM入门指南,重点讲解如何使用nilmtk工具包从UKDALE数据集中提取电器级用电数据。教程涵盖环境搭建、核心概念解析、数据提取实战及常见问题排查,帮助读者快速掌握非侵入式负荷监测的数据预处理关键步骤。

rgv234567的博客 499

Android-PickerView的简单封装与使用

前言:这是一款仿iOS的PickerView控件,有时间选择器和选项选择,支持年月日时分,年月日,时分等格式。 主要目的:百度上有非常多写这个开源项目的用法,不过大多数都是照搬github上面复制过来的,少有人说明该如何设置三级联动的数据源,这里将身高、体重、年龄等进行简单的封装,使用只需一句代码,如需基本使用可参考原项目链接: https://github.com/Bigkoo/Androi...

HelloWord的博客 3万+

MATLAB AppDesigner 中TextArea保留原有信息并换行显示提示信息

App Designer 中的文本区域TextArea组件,一般可以用来作为matlab app设计中的信息显示。 app.TextArea.Value = 'Hello Matlab'; Value可以是字符向量、字符向量元胞数组、字符串数组或一维分类数组。这样直接给TextArea赋值,每次赋值都会消除先前的信息,然后显示新的信息。如果想要在app实现保留原有信息、多行信息的输出,在MathWorks官方帮助中心给出了一种方法: cellArrayText{1} = sprintf('%s\n

我是麻瓜喔的博客 1万+

深度学习环境搭建以及DeepLabCut安装过程

文章目录 一、查询电脑硬件 安装GeForce驱动程序 二、环境搭建与软件安装 1.安装CUDA运算平台软件 2.安装cuDNN支持包 3.配置环境变量 三、 DeepLabCut环境配置 1.安装Anaconda 2.创建容器环境 3.激活容器环境 4.安装TensorFlow 5.验证TensorFlow是否安装成功 6...

m0_51136557的博客 3157

iOS 多级下拉菜单

前言 App 常用控件 -- 多级下拉菜单, 如团购类, 房屋类, 对数据进行筛选. 有一级, 二级, 三级, 再多就不会以这种样式,呈现给用户了. 作者就简单聊一下 多级下拉菜单 二级下拉筛选菜单.png 一 目标 默认显示一个 TableView, 点击数据后, 添加第二个TableView, 并实现大小变化第二次打开下拉菜单. 保存上次选中数据

cleven 3504

GPU 资源池化云平台解决方案​

定义与特点Kubernetes是一个开源的容器编排和管理平台,通过提供自动化和声明式的方式来部署、扩展、维护和运行应用程序。它支持跨多个主机和集群部署容器,确保应用程序的高可用性和可扩展性。Kubernetes提供了丰富的功能和插件,允许用户根据自己的需求进行定制和扩展。架构与组件控制平面(Control Plane):负责集群的决策(如调度)和集群状态的检测与响应。

ZhangJiqun&191cm&85kg 1161

安卓(android)实现选择时间功能,Android日期选择控件使用详解

本文实例为大家分享了Android日期选择控件的使用方法,供大家参考,具体内容如下1.创建dialog 布局android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center">android:datePickerMode="spinner"android:calenda...

weixin_34872032的博客 3102

Jenkins部署前后端分离项目最全图文教程(手把手教学)

最近Jenkins部署的热度比较高,于是就想出一篇关于我是如何使用Jenkins部署前后端分离项目的,本篇记录了我是如何一步一步去配置、搭建和部署的完整流程,每一行代码都进行了实测和讲解,通过图文的教学写成博客分享给大家!

黄团团的个人博客 4779

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

uniapp中利用表单组件picker-view 封装时,分,秒选择组件

uniapp picker-view 封装时分秒选择器组件

ltc_Yan的博客 614

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

PickerView的封装

PickerView的封装平时我在使用PickerView的时候,比较麻烦,要配置各种设置,本文就是主要介绍了如何封装了一个比较齐全的PickerView,其中可以直接用DatePickerView的四个基本类型以及一个自定义类型: PickerViewTypeDate_Time, PickerViewTypeDate_Date, PickerViewTypeDate_

Do_Myself的博客 374

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

uni-app 使用v-model封装picker组件和自定义样式

1、v-model封装picker组件 2、自定义picker样式

qq_40007317的博客 8950

【小程序】基于picker-view组件 封装一个时间选择器(年月日时分秒)

一、背景 最近不是到5.20了嘛,本来想做一个记录恋爱时长的小程序来玩玩。开始的恋爱的时间输入嘛,我想着用个时间选择器吧,但一看小程序官方给的picker组件的时间选择仅支持精确到日,或者日期和时间分开。想想能不能做个连在一起,精确到年月日时分秒的时间选择器。需求来了,做一个能选择年月日的时分秒的选择器。官方提供的picker-view我看了demo阅览发现还挺合适,因为我也不需要像picker那...

the_old_boy的博客 6307

uniapp-微信小程序自定义picker选择器(仅限单项选择)

uniapp 微信小程序自定义picker选择器(仅限单项选择)

qq_28257105的博客 2645

iOS开发 图片选择器、图片多选功能的实现

iOS开发 图片选择器、图片多选功能的实现

CWen丶文 的博客 7094

安卓原生时间选择器,DatePicker和TimePicker并用,弹窗dialog

欢迎大家吐槽。。。 public class MainActivity extends Activity { private AlertDialog.Builder mAlertDialog; private Button mButton; private int mHour, mMinute; @Override protected void onCreate(Bundle sa

mxiaoyem的博客 2万+

DataPicker 去掉日历 calendarViewShown="false" 失效解决方法

5.0之后,datapicker 设置去掉右边日历.发现 calendarViewShown=”false” ,失效了. 具体解决方案是,在布局文件的datapicker,多加一行属性 android:datePickerMode=”spinner”. api21,datapicker多了个mode的属性,有两个值可供选择 MODE_SPINNER = 1 和 MODE_CALEND

aofeng5747的专栏 5902

iOS下拉三级菜单多选

因新功能需求,要做三级菜单多选,相信大家平时做的都是单选,还没有区分选择类型,但我们得要求是必须要区分来源是区域还是地铁,如果是区域还要区分是哪个区,是地铁站则需要区分是几号线,刚接到这样的需求也是一脸懵懂,不知所措,哎......主要都要怨自己学艺不精,不过经过一天的奋斗还是有了不错的成果,但水平有限,大佬不要见笑,有不足之处欢迎指导。qq:643342713 下载地址:https://git

你就是我心中的棉花糖的专栏 2911

记一次移动端封装自定义时间选择控件

近期在做一个移动端项目,遇到一个自定义选择时间控件的需求;具体要实现的交互逻辑如下:1. 预约下单的时候必须大于当前系统时间30分后,选择时间按照24小时制,分钟按照每隔15分钟进行显示(例如:15、30、45、00);2. 如当前时间为14点30分,此时预约时间只能大于15点之后的时间用车(包含15点整);3. 如当前系统时间为14点31分,此时预约时间只能大于15点整之后的时候用车(不包含15点整);

u014165391的博客 962
上一篇: Android6.0动态权限需要你做的事情
下一篇: 兼容SDK4.4(api19)拍照、相册选择图片裁剪压缩上传头像
lizz821
博客等级 码龄12年 11粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值