我正在使用一个数字选择器,其定义如下:
<NumberPicker
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:id="@+id/numberPickerCompoundView" />
此数字选择器的用途是在用户单击TextView时显示,以帮助他们在不使用虚拟键盘的情况下更改textview的值。在我的扩展LinearLayout的类中,我使用以下代码捕获TextView上的单击并显示数字选择器:
mTextView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
if(mNumberPicker.getVisibility()==View.VISIBLE){
mNumberPicker.setVisibility(View.GONE);
} else {
mNumberPicker.setVisibility(View.VISIBLE);
}
setValue(mTextView.getText().toString());
}
});
然后使用以下代码将onClickListener添加到数字选择器
mNumberPicker=(NumberPicker)findViewById(R.id.numberPickerCompoundView);
mNumberPicker.setMaxValue(9);
mNumberPicker.setValue(mCurrentValue);
mNumberPicker.setClickable(true);
mNumberPicker.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Toast.makeText(getContext(), "Click Captured", Toast.LENGTH_SHORT).show();
if (view == mNumberPicker){
mNumberPicker.setVisibility(View.GONE);
setValue(Integer.toString(mNumberPicker.getValue()));
mTextView.setVisibility(View.VISIBLE);
}
}
});
但是,当我点击数字选择器时,它只是继续滚动值,但不会进入onClick()方法。请有人帮忙。
答案 0 :(得分:-2)
NumbePicker
使用click来更改其值。您可以将逻辑添加到OnValueChangeListener.onValueChange()
。
也许,你应该只隐藏选择器if (newValue == oldValue)
。