PickerView

Android 滚动选择器
授权协议 Apache
开发语言 Java
所属分类 iOS代码库、 选择器(Picker)
软件类型 开源软件
地区 国产
投 递 者 罗光华
操作系统 Android
开源组织
适用人群 未知
 软件概览

PickerView

Android滚动选择器(支持省市区联动选择、日期选择、时间选择)。

使用方法

1. 添加依赖

注:${latestVersion}请替换为当前最新版本号,见releases

gradle:

implementation 'com.github.duanhong169:picker-view:${latestVersion}'

maven:

<dependency>
	<groupId>com.github.duanhong169</groupId>
	<artifactId>picker-view</artifactId>
	<version>${latestVersion}</version>
	<type>pom</type>
</dependency>

2. 集成到项目中

2.1 集成PickerView

添加到layout文件中:

<top.defaults.view.PickerView
	android:id="@+id/pickerView"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"/>

使用列表作为数据源

List<Item> items = new ArrayList<>();
for (int i = 0; i < 42; i++) {
    items.add(new Item("Item " + i));
}

pickerView.setItems(Item.sampleItems(), item -> textView.setText(item.getText()));

实现Adapter作为数据源

配置数据源:

PickerView.Adapter adapter = new PickerView.Adapter() {

    @Override
    public int getItemCount() {
        return 42;
    }

    @Override
    public String getText(int index) {
        return "Item " + index;
    }
};
pickerView.setAdapter(adapter);

监听选择事件:

pickerView.setOnSelectedItemChangedListener((pickerView, previousPosition, selectedItemPosition) -> 
        textView.setText(pickerView.getAdapter().getText(selectedItemPosition)));

2.2 集成DivisionPickerView

添加到layout文件中:

<top.defaults.view.DivisionPickerView
    android:id="@+id/divisionPicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:preferredMaxOffsetItemCount="4"
    android:background="#e7e7e7"/>

构建省市区数据源:

参考Divisions.java

设置数据源并监听选择事件

final List<DivisionModel> divisions = Divisions.get(this);
divisionPicker.setDivisions(divisions);
divisionPicker.setOnSelectedDateChangedListener(division -> textView.setText(Division.Helper.getCanonicalName(division)));

2.3 集成DateTimePickerView

添加到layout文件中:

<top.defaults.view.DateTimePickerView
    android:id="@+id/datePickerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:preferredMaxOffsetItemCount="3"
    app:textSize="18sp"
    app:type="dateTime"
    app:minutesInterval="fifteen"
    app:curved="true"
    android:background="#e7e7e7"/>

设置初始日期:

dateTimePickerView.setStartDate(Calendar.getInstance());
// 注意:月份是从0开始计数的
dateTimePickerView.setSelectedDate(new GregorianCalendar(2017, 6, 27, 21, 30));

监听选择事件:

dateTimePickerView.setOnSelectedDateChangedListener(new DateTimePickerView.OnSelectedDateChangedListener() {
    @Override
    public void onSelectedDateChanged(Calendar date) {
        int year = date.get(Calendar.YEAR);
        int month = date.get(Calendar.MONTH);
        int dayOfMonth = date.get(Calendar.DAY_OF_MONTH);
        int hour = date.get(Calendar.HOUR_OF_DAY);
        int minute = date.get(Calendar.MINUTE);
        String dateString = String.format(Locale.getDefault(), "%d年%02d月%02d日%02d时%02d分", year, month + 1, dayOfMonth, hour, minute);
        textView.setText(dateString);
        Log.d(TAG, "new date: " + dateString);
    }
});

更详细的使用方法请参见示例。

  • GitHub有一个开源控件PickerView,可以实现三级联动的效果。虽然该控件使用非常简单,但是填充数据异常繁琐。GitHub上的Demo在填充数据的时候是一条一条地填充的,代码过于冗余。下面提供一种简便的方式来实现。 (1)在app目录下新建一个assets文件夹,将province_data.xml文件复制到该文件夹下,该XML文件里保存了全国的省市县的地址数据。 (2)使用SAX解析xm

  • package com.greyka.imgr.classes; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.

 相关资料
  • 滚动选择组件。纯 JS 模拟滚动选择,跨平台。 Usage 全部引入 import { Scrollpicker } from 'beeshell'; 按需引入 import Scrollpicker from 'beeshell/dist/components/Scrollpicker'; Examples Scrollpicker 与 BottomModal 组合应用 相关属性说明 Cod

  • 本文向大家介绍Android PickerView滚动选择器的使用方法,包括了Android PickerView滚动选择器的使用方法的使用技巧和注意事项,需要的朋友参考一下 手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器,前几天用手机刷了MIUI,发现自带的那个时间选择器效果挺好看的,于是就自己仿写了一个,权当练手。先来看效果:                           

  • 另一个位置问题。我再次尊重你们,因为现在我知道有多少情况下,你们必须这样做才能进行第一次,也许第二次尝试。我(和你)以前的方法同样不起作用。目标页面和标签,我需要href。 这些并不能满足我的需要。

  • 我正在使用TouchAction和Appium中的坐标向下滚动本机应用程序。代码示例: 但有一个警告——应用程序中的一个部分包含一大块文本。这些方法不是向下滚动,而是选择文本中的单词(比如长按复制单词),而不是滚动。我尝试过设置坐标以避免滚动时出现文本,但没有效果。你面对过这个问题吗?任何帮助都将不胜感激。如果可能,请包括代码示例!谢谢

  • mpvue 对小程序原生组件 slider 的各个属性完全支持,还是有两个坑要说下(其实大部分坑都是由于小程序原生组件的绑定事件在 mpvue 框架中写法不同造成的): slider的属性bindchange和bindchanging 在mpvue框架中的写法为: @change和@changing 类型为事件的属性在完成触发事件后,取值的方式为:event.mp.detail = {value:

  • Slider 滑动选择器 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 需要通过v-model绑定一个值,来初始化滑块的选择值(0到100之间),这个值是双向绑定的,您可以通过这个值,实时地得知内部的滑动结果。 <template> <view class="wrap"> <u-slider v-model="

  • 我有一个选择元素,里面有多个选项: 对于这里看到的每个选项元素,我都有另一个select元素。基本上,我在一个选择元素中列出了一系列音乐流派,在它下面,是与每一个“主流派”相关的子流派。 我想做的是使子体裁只有在相对体裁被选中时才可见。例如,如果用户选择“Pop”,我想向他们显示包含Pop子类型的相关选择字段。 我的HTML标记实际上是由WordPress插件生成的,不幸的是,我无法编辑它。也就是