在Android中一段时间​​后隐藏TextView

时间:2014-03-05 10:16:52

标签: android textview

我希望在一段时间间隔3秒后隐藏TextView。我用Google搜索并找到了一些代码,我尝试了如下所示的代码,但它无法正常工作。

请告诉我这有什么问题?

tvRQPoint.setText("+0");
tvRQPoint.postDelayed(new Runnable() {
    public void run() {
        tvRQPoint.setText("+0");
    }
}, 3000);

还有一件事,如何删除超时?当我在click ListView事件中使用此功能时,如果用户点击一个选项然后点击第二个选项,那么当3秒结束时(点击第一个选项后),它不会显示第二个选项3秒。

8 个答案:

答案 0 :(得分:28)

尝试View INVISIBLEGONE赞:

tvRQPoint.postDelayed(new Runnable() {
public void run() {
    tvRQPoint.setVisibility(View.INVISIBLE);
}
}, 3000);

View visibility设为view.setVisibility(View.INVISIBLE|View.VISIBLE|View.GONE);

答案 1 :(得分:6)

如何用一些动画隐藏文本视图?

  int delayMillis = 3000;
  Handler handler = new Handler();
  final View v = tvRQPoint; // your view
  handler.postDelayed(new Runnable() { 
    @Override
    public void run() {
       TranslateAnimation animate = new TranslateAnimation(0,-view.getWidth(),0,0);
       animate.setDuration(500);
       animate.setFillAfter(true);
       v.startAnimation(animate);
       v.setVisibility(View.GONE);

    }, delayMillis);

答案 2 :(得分:3)

您要做的是没有问题,但三秒后您想要隐藏textview,请使用setVisibility

tvRQPoint.setText("+0");
    tvRQPoint.postDelayed(new Runnable() {
        public void run() {
            tvRQPoint.setVisibility(View.INVISIBLE);
        }
    }, 3000);

答案 3 :(得分:1)

试试这个 -

Handler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
tvRQPoint.setText("+0");
handler = new Handler();
handler.postDelayed(csRunnable, 3000); 
}

Runnable csRunnable =new Runnable() 
{      
@Override
public void run() 
{
tvRQPoint.setVisibility(View.INVISIBLE);    
}
};

答案 4 :(得分:1)

试试这个......

public class MainActivity extends Activity   {


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView tv=(TextView)findViewById(R.id.tv);
    tv.setText("+0");
    tv.postDelayed(new Runnable() {
        public void run() {
            tv.setVisibility(View.INVISIBLE);
        }
    }, 3000);
}
 }

答案 5 :(得分:1)

我只是将“视图”的动画从Alpha 1更改为0,即可见性从100%更改为0%。

scrollUp = findViewById(R.id.lottieAnimationView);
    scrollUp.postDelayed(new Runnable() {
        @Override
        public void run() {
            AlphaAnimation alphaAnimation = new AlphaAnimation(1,0);
            alphaAnimation.setDuration(400);
            scrollUp.startAnimation(alphaAnimation);
            scrollUp.setVisibility(View.INVISIBLE);
        }
    },5000);

我正在使用LottieAnimationView,但其他视图也一样
只需替换R.id.{ID OF YOUR VIEW}中的ID
alphaAnimation.setDuration(400);这意味着动画将需要4秒钟才能完成,即,该数字越高,动画越慢。
},5000); 而“ 5000”表示延迟5秒。
对于延迟的每一秒,您将其设置为1000毫秒或毫秒的延迟。

1秒= 1000毫秒

希望它对某人有帮助,所有其他答案也都是正确的,这只是另一种解决方法。

答案 6 :(得分:0)

您正在run()方法中设置文本。你可以用两种方式隐藏文本

View.INVISIBLE - 为textview提供空间并隐藏其内容

View.GONE - 删除textview的空间并隐藏其内容

所以请致电

tvRQPoint.setVisibility(View.INVISIBLE);

                   (or)

tvRQPoint.setVisibility(View.GONE);

答案 7 :(得分:0)

希望它的工作:

tvRQPoint.setText("+0");
Timer timer = new Timer();
    timer.schedule(new TimerTask() {

       public void run() {

          tvRQPoint.setVisibility(View.GONE);

       }

    },3000);