一个嵌套在Activity里面的自定义选择器AndroidPickView

本文介绍了如何在Android项目中将选择器布局到Activity或Fragment上,通过研究第三方库Android-PickerView,特别是其WheelView组件,实现了自定义条件和日期选择器。详细步骤包括添加依赖、XML布局引用及Activity中的逻辑代码。最后,感谢Bigkoo提供的开源框架,并给出了项目链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、之前在项目里面做的选择器,都是一种弹窗的模式,后来在新项目中遇到一个新需求,需要把选择器布局到Activity或者fragment上面,当时有点蒙蔽了,因为以前都是用第三方框架直接集成。但是既然产品提出了需求,必须要做,所以特地研究了第三方框架Android-PickerView发现里面有一个自定义类WheelView,可以单独拿出来用,这样的话就好办的多了。

二、先上效果图

条件选择器:

日期选择器:

 

三、实现过程

1.首先添加依赖,在app的build.bradle文件里面添加

compile 'com.contrarywind:Android-PickerView:4.1.6'

自定义条件选择器的view,代码过程如下

/**
 * Created by zzf on 2018/8/15.
 */

public class SelectorView extends LinearLayout{

    WheelView wv_room;

    private List<String> listRoom = new ArrayList<>();
    private ArrayWheelAdapter<String> roomAdapter;
    private OnSelectListener mListener;

    public SelectorView(Context context) {
        this(context,null);
    }


    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        getParent().requestDisallowInterceptTouchEvent(true);
        return super.dispatchTouchEvent(ev);
    }

    public SelectorView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        View mView = LayoutInflater.from(context).inflate(R.layout.selector_view, this);
        wv_room = mView.findViewById(R.id.wv_selector);
        wv_room.setDividerColor(getResources().getColor(R.color.orange_b79a54));
        wv_room.setTextColorCenter(getResources().getColor(R.color.orange_b79a54));

           /*日*/
        resetListString(listRoom, 1, 30);
        roomAdapter = new ArrayWheelAdapter<>(listRoom);
        wv_room.setAdapter(roomAdapter);
        wv_room.setCurrentItem(0);
        wv_room.setCyclic(false);

        wv_room.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(int index) {
                String currentRoom = listRoom.get(wv_room.getCurrentItem());
                mListener.selectRoom(currentRoom);
            }
        });
    }

    private void resetListString(List<String> list, int start, int end) {
        if (list != null) {
            list.clear();
        }
        for (int i = start; i < end + 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值