使用onClick()无法使用NumberPicker

时间:2014-07-07 11:28:20

标签: onclicklistener numberpicker

我正在使用一个数字选择器,其定义如下:

<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()方法。请有人帮忙。

1 个答案:

答案 0 :(得分:-2)

NumbePicker使用click来更改其值。您可以将逻辑添加到OnValueChangeListener.onValueChange()

也许,你应该只隐藏选择器if (newValue == oldValue)