转载自: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
代码见附件