NumberPicker的使用

NumberPicker是一个滚动的数值选择器,在github上可以下载到开源项目,将项目集合到自己的项目中,并对其进行修改。首先在NumberPicker.java中,

mInputText.setTextColor(getResources().getColor(R.color.mine));

可以修改numberpicker里面的字体的颜色,numberpicker里面线条的颜色可以通过修改图片资源得以修改。在layout里面添加一个xml,将自己想要的布局写在xml中,在自己的xml中引入numberpicker。
在java中写一个show()方法,并给它赋值int i;创建一个对话框,对话框显示的内容是自定义的xml,点击numberpicker中的确定按钮的时候就将numberpicker中的数值传递到activity中,点击取消按钮的时候,就把对话框取消掉。在init()中,start.setMaxValue(100);为数值里面的最大值,start.setMinValue(0);为最小值,newVal就是numberpicker当前的值

private void show(final int i) {
AlertDialog.Builder builder = new AlertDialog.Builder(TwoActivity.this);
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.popu_picker_time, null);
builder.setView(view);
init(view);
final AlertDialog dialog = builder.create();
dialog.show();
btn2 = (Button) dialog.findViewById(R.id.main_light_btn2);
btn1 = (Button) dialog.findViewById(R.id.main_light_btn1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (i) {
case 1:
activity_main_target_tv1.setText(k + "%");
activity_main_target_tv1.setTextColor(Color
.parseColor("#e7830d"));
target_bt2.setTextColor(Color.parseColor("#e7830d"));
break;
default:
break;
}
dialog.dismiss();
}
});
} 
private void init(View view) {
NumberPicker start = (NumberPicker) view
.findViewById(R.id.numberPicker);
start.setMaxValue(100);
start.setMinValue(0);
start.setFocusable(true);
start.setFocusableInTouchMode(true);
start.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal,
int newVal, EditText editText) {
k = newVal;
}
});
}

当然将xml的内容显示出来的除了用dialog的形式,还能用popupwindow的方式,下面是用popup的方式,原理是一样的:

 private void show(final int i) {
 View popuView = LayoutInflater.from(this).inflate(
 R.layout.popu_picker_time, null);  
 init(popuView); final PopupWindow popu = new PopupWindow(popuView,
 ViewGroup.LayoutParams.WRAP_CONTENT,
 ViewGroup.LayoutParams.WRAP_CONTENT); 
 popu.setBackgroundDrawable(new BitmapDrawable());
 popu.setOutsideTouchable(true); popu.setFocusable(true); int[] location =
 new int[2]; more_page_row2.getLocationOnScreen(location);
 popuView.measure(0, 0);
 popu.showAtLocation(more_page_row2, Gravity.TOP, location[0],
 location[1]); 
 btn2 = (Button) popuView.findViewById(R.id.main_light_btn2);
 btn2.setOnClickListener(new View.OnClickListener() {
 @Override public void onClick(View v) { switch (i) { case 1:
 activity_main_target_tv1.setText("" + k); break; case 2:
 activity_main_target_tv2.setText("" + k); break; case 3:
 activity_main_target_tv3.setText("" + k); break; case 4:
 activity_main_target_tv4.setText("" + k); break; case 5:
 activity_main_target_tv5.setText("" + k); break;
 default: break; }
 popu.dismiss(); } });
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值