Android - невозможно скрыть textView в течение определенного времени с помощью CountDownTimer

Я хочу скрыть textView по щелчку. Щелчок запускает таймер на определенное время, после того как это время истекло, textView должен снова стать видимым. Я пытаюсь скрыть textView одним щелчком мыши и снова сделать его видимым внутри public void onFinish(). По какой-то причине textView всегда виден. Я пробовал использовать view.setVisability(View.INVISIBLE) и view.setVisability(View.GONE), но все равно не получается.
EDIT
Весь остальной код внутри прослушивателя выполняется по мере необходимости, за исключением видимости. Мне все еще нужно определить textView как clickable внутри XML-файла?

РЕДАКТИРОВАТЬ 2
Я использую new CountDownTimer(25000, 1000) намеренно, так как таймер обратного отсчета отображается внутри другого элемента, поэтому я не только пытаюсь отсрочить выполнение.

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
        textView.setVisibility(View.GONE);
        Log.i("textView: ","clicked");
        if (....){
            new CountDownTimer(25000, 1000) {
            {
             //some code...
            }

            public void onFinish() {
                otherTextView2.setText("done");
                textView.setVisibility(View.VISIBLE);
            }
          }.start();
        }
    }
}


EDIT 3

Мне удалось скрыть textView, но это временное решение. по щелчку я устанавливаю следующие свойства:

textView.setText("");
textView.setEnabled(false);


И как только время истекло, я снова включаю textView и снова устанавливаю текст. Я все еще хотел бы знать, как решить эту проблему с помощью правильного кода.


person Alex    schedule 29.03.2015    source источник
comment
вы уверены, что пытаетесь скрыть правильный? textEditGo против textEdit,   -  person Blackbelt    schedule 29.03.2015
comment
да. Была опечатка. Я обновил код.   -  person Alex    schedule 29.03.2015
comment
Я предполагаю, что setVisibility() не применяется, как вы ожидаете. После установки типа видимости нужно перерисовать вид. Я думаю, что просто установка свойства не изменит его.   -  person Quark    schedule 29.03.2015


Ответы (4)


Добавьте android:clickable="true" в XML для текстового представления.

Хороший способ определить проблему — поместить операторы журнала в обработчик onClick, чтобы увидеть, действительно ли возникло событие.

person Michael Shi    schedule 29.03.2015

попробуйте следующее:

@Override
public void onClick(View v) {
        v.setVisibility(View.GONE);
        v.postDelayed(new Runnable() {
            @Override
            public void run() {
                v.setVisibility(View.VISIBLE);
            }
    },5000);            
}
person Viktor Yakunin    schedule 29.03.2015

Возможно, лучше использовать Handler().postDelayed для достижения своих целей,

    mTextEditGo = (TextView) findViewById(R.id.txt);
    mTextEditGo.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mTextEditGo.setVisibility(View.INVISIBLE);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    mTextEditGo.setVisibility(View.VISIBLE);
                }
            }, 2000);   // run after 2000ms
        }
    });
person li2    schedule 29.03.2015

Вы получаете ссылку на представление, нажимаемое на прослушиватель onClick, попробуйте использовать «v» в методе onclick вместо «текстового просмотра», который вы используете в настоящее время.

i.e -

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
        v.setVisibility(View.GONE);
        Log.i("textView: ","clicked");
        if (....){
            new CountDownTimer(25000, 1000) {
            {
             //some code...
            }

            public void onFinish() {
                otherTextView2.setText("done");
                v.setVisibility(View.VISIBLE);
                v.invalidate();
            }
          }.start();
        }
    }
}
person CrazyPixel    schedule 30.03.2015