转载自:http://blog.csdn.net/lyc66666666666/article/details/9219039
android前段组件中, 填表单,选择条目 的样式有很多, WheelView滚动组件为其中一种,如下图所示:
前两种大家很多都用过, 不过我修改了一下,弄出第三种,希望能帮助到大家:
MainActivity.java:
package com.example.wheel_test; import android.app.ActionBar.LayoutParams; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends Activity { public String category_str1[] = new String[] { " 餐饮 ", " 交通 ", " 购物 ", " 娱乐 ", " 医疗 ", " 教育 ", " 居家 ", " 投资 ", " 人情 " }; public String category_str2[][] = new String[][] { new String[] { " 早餐 ", " 午餐 ", " 晚餐 ", " 夜宵 ", "饮料水果", " 零食 ", "蔬菜原料", "油盐酱醋", "其他.." }, new String[] { "地铁", "公交", "打的", "加油", "停车", "过路过桥", "罚款", "包养维修", "火车", "车款车贷", "车险", "航空", "船舶", "自行车", "其他.." }, new String[] { "服装鞋帽", "日用百货", "婴幼用品", "数码产品", "化妆护肤", "首饰", "烟酒", "电器", "家具", "书籍", "玩具", "摄影文印", "其他.." }, new String[] { "看电影", "KTV", "网游电玩", "运动健身", "洗浴足浴", "茶酒咖啡", "旅游度假", "演出", "其他.." }, new String[] { "求医", "买药", "体检", "化验", "医疗器材", "其他.." }, new String[] { "培训", "考试", "书籍", "学杂费", "家教", "补习", "助学贷款", "其他.." }, new String[] { "美容美发", "手机电话", "宽带", "房贷", "水电燃气", "物业", "住宿租房", "保险费", "贷款", "材料建材", "家政服务", "快递邮政", "漏记款", "其他.." }, new String[] { "证券期货", "保险", "外汇", "出资", "黄金实物", "书画艺术", "投资贷款", "利息支出", "其他.." }, new String[] { "礼金", "物品", "慈善捐款", "代付款", "其他.." }, }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView btn = (TextView) findViewById(R.id.test_tv); btn.setOnClickListener(new OnClickListener() { @SuppressWarnings("deprecation") @Override public void onClick(View arg0) { // 创建会话框 final AlertDialog dialog = new AlertDialog.Builder( MainActivity.this).create(); dialog.setTitle("消费类别:"); /** * 创建新布局,最后加入到dialog布局中 */ final LinearLayout ll = new LinearLayout(MainActivity.this); // 设置布局方式:水平 ll.setOrientation(LinearLayout.HORIZONTAL); /** * 增加两个滑轮view */ final WheelView category1 = new WheelView(MainActivity.this); category1.setVisibleItems(5); category1.setCyclic(true); category1.setAdapter(new ArrayWheelAdapter<String>(category_str1)); final WheelView category2 = new WheelView(MainActivity.this); category2.setVisibleItems(5); category2.setCyclic(true); category2.setAdapter(new ArrayWheelAdapter<String>(category_str2[0])); // 创建参数 LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp1.gravity = Gravity.LEFT; // lp1.weight = (float) 0.6; LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); lp2.weight = (float) 0.6; lp2.gravity = Gravity.RIGHT; lp2.leftMargin = 10; /** * 将滑轮view加入到dialog布局中 */ ll.addView(category1, lp1); ll.addView(category2, lp2); /** * 为category1添加监听 */ category1.addChangingListener(new OnWheelChangedListener() { public void onChanged(WheelView wheel, int oldValue, int newValue) { category2.setAdapter(new ArrayWheelAdapter<String>(category_str2[newValue]));//简单加载数据 category2.setCurrentItem(category_str2[newValue].length / 2);//选择中间的那个作为选中项 } }); /** * 确定,取消按钮的事件 */ dialog.setButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String cat1 = category_str1[category1.getCurrentItem()]; String cat2 = category_str2[category1.getCurrentItem()][category2.getCurrentItem()]; btn.setText(cat1 + ">>" + cat2);//显示选择的内容信息 dialog.dismiss(); } }); dialog.setButton2("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); /** * 把自定义的view加入到dialog布局中 */ dialog.setView(ll); dialog.show(); } }); } }
代码结构:
这里使用dialog的实现方式,你也可以不使用dialog的按钮,标题,整个使用自已定义的布局,可以见另一博文:
http://hz-chenwenbiao-91.iteye.com/blog/2066342
代码见附件
相关推荐
在"android滑轮WheelView效果"这个主题中,我们可以看到开发者提供了一些示例应用,这些示例涵盖了多种使用场景。例如: 1. **密码滚动**:这个示例展示了如何使用`WheelView`实现数字密码输入。通常,这会涉及到...
`WheelView`以其独特的滚动效果和良好的用户体验,被广泛应用于各种应用中。本资源提供的是一份`WheelView`的源码,通过分析和学习这份源码,我们可以深入理解其工作原理,并能根据需求进行定制。 `WheelView`的...
总结,"WheelView"是Android开发中的一个重要组件,它使得在Android应用中实现iOS风格的滑轮选择变得更加容易。通过理解和掌握"WheelView"的使用,开发者可以构建出更加直观、用户友好的界面,提升应用的整体用户...
在IT行业中,滑轮组件(WheelView)是一种常见的用户界面元素,它允许用户通过滚动来选择数据项。在iOS系统中,苹果的iPhone设备使用了一种独特的时间选择器,被称为"时间滑轮",它提供了直观且高效的方式来选择日期...
ListView滑轮选择控件是一种常见的UI元素,在Android应用开发中被广泛使用,特别是在需要用户进行滚动选择的场景下,如日期选择、时间选择等。它借鉴了WheelView的基本概念,并结合ListView的特点,提供了更加丰富的...
在Android应用开发中,滑轮城市选择器是一种常见的交互组件,用于用户选择城市或地区。这种自定义的滑轮城市选择器通常具有良好的用户体验,因为它允许用户通过滚动一个可视化的圆盘来快速浏览并选择所需的城市。...
3. **WheelView组件**: WheelView是一种可滚动的选择器,适用于创建滚轮式的用户界面。相比于Spinner,WheelView更适合展示大量的连续数据,且视觉效果更直观,用户体验更好。在实现三级联动时,每个WheelView对应...
这里我们将围绕Android应用源码、Java编程语言以及与滑动相关的组件进行深入探讨。 首先,Android应用主要基于Java语言编写,因此理解Java的基本语法、面向对象编程概念、异常处理以及线程管理至关重要。在源码中,...
在Android开发中,滑轮(WheelView)是一种常见的UI组件,常用于日期选择器、选项滚动等场景。自定义滑轮可以实现更丰富的交互效果和界面设计,满足特定的业务需求。下面我们将深入探讨如何在Android中自定义滑轮...
通过以上步骤,开发者可以成功地在Android应用中实现一个类似iOS风格的多选滑轮组件,为用户提供便捷的操作体验。在实际开发中,可以根据具体需求进行调整和优化,例如添加动画效果,使交互更加流畅。
在Android开发中,滚轮选择器(Wheel View)是一种常见的用户界面组件,它允许用户通过滚动来选择一个值,常用于日期选择、时间选择等场景。本教程将深入探讨如何自定义一个底部弹出的滚轮选择器。 一、滚轮选择器...