博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现滚动单选控件
阅读量:6518 次
发布时间:2019-06-24

本文共 3883 字,大约阅读时间需要 12 分钟。

hot3.png

效果图如下:

66b3f59b68a769b0311379518b2c0bb0cb6.jpg

添加依赖

implementation 'com.weigan:loopView:0.1.2'

新建一个WheelViewDialog类, 代码如下

public class WheelViewDialog extends Dialog{    private LoopView loopView;    private Button btn_ok;    private Button btn_cancle;    private OnSelectedListener listener;    private ArrayList
stringArrayList = new ArrayList<>(); private int position = 0; public WheelViewDialog(Context context, ArrayList
arrayList) { super(context,R.style.alert_dialog); stringArrayList = arrayList; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_view); setCanceledOnTouchOutside(false);//设置显示dialog后,触屏屏幕不会使dialog消失 loopView = findViewById(R.id.loopView); btn_ok = findViewById(R.id.btn_ok); btn_cancle = findViewById(R.id.btn_cancle); // 设置原始数据 loopView.setItems(stringArrayList); loopView.setNotLoop(); // 滚动监听// loopView.setListener(new AdapterView.OnItemSelectedListener() {// @Override// public void onItemSelected(int index) {// if (!TextUtils.isEmpty( stringArrayList.get( index) ) ){// Toast.makeText(getContext() ,"选择了" + stringArrayList.get( index) , Toast.LENGTH_SHORT).show();// position = index;//存储选择的位序// }// }// }); loopView.setListener(new OnItemSelectedListener() { @Override public void onItemSelected(int i) { if (!TextUtils.isEmpty( stringArrayList.get( i) ) ){ Toast.makeText(getContext() ,"选择了" + stringArrayList.get( i) , Toast.LENGTH_SHORT).show(); position = i;//存储选择的位序 } } }); btn_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (listener!=null){ if (!TextUtils.isEmpty( stringArrayList.get( position) ) ){ listener.getData( stringArrayList.get( position) ); } } dismiss(); } }); btn_cancle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); } public interface OnSelectedListener{ void getData(String data); } public void setOnSelectedListener(OnSelectedListener listener){ this.listener = listener; }}

新建 dialog_view.xml文件, 代码如下:

背景图片是这个:

然后就可以在需要调用的地方调用了

比如点击一个按钮, 弹出dialog, 示例代码:

public class DialogActivity extends AppCompatActivity {    private Button showDialogBtn;    private ArrayList
stringArrayList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); showDialogBtn = findViewById(R.id.act_show_dialog_btn); for (int i = 0; i < 15; i++) { stringArrayList.add("item " + i); } showDialogBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showDialog(); } }); } private void showDialog() { WheelViewDialog dialog = new WheelViewDialog( DialogActivity.this, stringArrayList ); dialog.setOnSelectedListener(new WheelViewDialog.OnSelectedListener() { @Override public void getData(String data) { Toast.makeText(DialogActivity.this, ""+data, Toast.LENGTH_SHORT).show(); } }); dialog.show(); }}

ok完成

转载于:https://my.oschina.net/lanyu96/blog/2989445

你可能感兴趣的文章
Uber系统从Postgres迁移到MySQL
查看>>
鸟哥:技术人员如何保持进步
查看>>
Go 领军人物谢孟军:智能制造渴望银弹,首先要摒弃偏见
查看>>
Ockam为物联网设备带来区块链无服务器身份识别
查看>>
基于 DevOps 实践的 .NET Core 给开发者带来了哪些好处?
查看>>
小米人员架构调整:组建中国区,王川任总裁
查看>>
使用 https, 并将 WWW 跳转到 NON-WWW
查看>>
Google发布Puppeteer 1.0
查看>>
Vue性能优化:如何实现延迟加载和代码拆分?
查看>>
5G一周热闻:华为夺联通5G大单,首张5G电话卡发放
查看>>
Stack Overflow上最热门问题是什么?
查看>>
微软Build 2017第二天:跨平台跨硬件开发体验
查看>>
Java EE跟JCP说再见
查看>>
分布式团队面临的五大问题及解决办法
查看>>
GitLab 8.7发布
查看>>
【互联网专场】以云为桥,腾讯云助互联网行业加速连接人工智能
查看>>
如何将C# 7类库升级到C# 8?使用可空引用类型
查看>>
有货移动Web端性能优化探索实践
查看>>
“软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
查看>>
Gerrit代码Review入门实战
查看>>