`

WheelView组件(滑轮时间组件)的应用(转)

 
阅读更多

转载自: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

 

 

代码见附件

 

 

 

  • 大小: 27.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics