Возникли проблемы с работой onClick() с NumberPicker

Я использую средство выбора чисел, которое определяется следующим образом:

<NumberPicker
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:id="@+id/numberPickerCompoundView" />

Цель этого средства выбора чисел — появляться, когда пользователь щелкает 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(). Может кто-нибудь, пожалуйста, помогите.


person Aviral Bansal    schedule 07.07.2014    source источник


Ответы (1)


NumbePicker использует щелчок, чтобы изменить свое значение. Вы можете добавить свою логику в OnValueChangeListener.onValueChange().

Возможно, стоит только скрыть пикер if (newValue == oldValue).

person Alex Cohn    schedule 17.07.2014
comment
при нажатии на выделенный элемент OnValueChangeListener.onValueChange не вызывается! - person Khaled Lela; 18.05.2017