如何在单击时停止闪烁的textview字段

时间:2012-12-13 17:44:56

标签: java android

我正在为我的android创建一个计时器应用程序。它从指定时间(即8分钟)倒计时到0。

我已将其编码为应用程序启动时显示指定的时间。当您点击TextView显示开始倒计时的时间时,会更新TextView事件中的onTick()。当您再次单击TextView时,它将停止倒计时并保存剩余的毫秒数,以便在下次点击TextView时恢复(基本上暂停时钟)。

一切都按预期工作。但是,单击TextView时,它会消失,直到释放单击。如果我按住了3秒钟,那么TextView完全消失,并在释放后立即重新出现。

如何停止此行为以继续显示TextView整个时间的值?

编辑:

    tvPeriod.setOnLongClickListener( new View.OnLongClickListener() {           
        @Override
        public boolean onLongClick(View v) {
            valPeriod = 1;
            tvPeriod.setText( tvPeriodPrefix + "1" );

            return true;
        }
    });

2 个答案:

答案 0 :(得分:0)

你可以做一些事情,比如将背景设置为颜色,甚至透明。实际上在较低级别,Button是TextView的后代,因此可以解释为什么它可以像Button一样。

答案 1 :(得分:0)

尝试使用此示例代码。

import android.os.Bundle;
import android.os.CountDownTimer;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView tv;
    CountDownTimer countDownTimer;
    boolean isRunning = false;
    long remainingTime = 90000;
    long elapsedTime = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.tv1);
        tv.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (isRunning) {
                    isRunning = false;
                    countDownTimer.cancel();
                    remainingTime = elapsedTime;
                } else {
                    countDownTimer = new CountDownTimer(remainingTime, 1000) {

                        public void onTick(long millisUntilFinished) {
                            elapsedTime = millisUntilFinished;
                            tv.setText("seconds remaining: "
                                    + millisUntilFinished / 1000);

                        }

                        public void onFinish() {
                            tv.setText("done!");
                        }
                    }.start();
                    isRunning = true;
                }

            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}