Jeeten Parmar
Jeeten Parmar

Reputation: 5757

Hide TextView after some time in Android

I want to hide TextView after some time interval say 3 seconds. I googled and found some code and I tried code as shown below but It is not working.

Please tell me what is the wrong with this ?

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

One more thing, how to remove timeout ? As I am using this on click event of ListView, If user clicks on one option and then clicks on second option, then as 3 seconds got over (after clicked on first option), It does not show second option for 3 seconds.

Upvotes: 13

Views: 19243

Answers (8)

Abhishek C. Gidde
Abhishek C. Gidde

Reputation: 169

I simply animated the View from alpha 1 to 0, meaning visibility from 100% to 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);

I am using the LottieAnimationView but same is applicable with any other view
just replace the id in R.id.{ID OF YOUR VIEW}
alphaAnimation.setDuration(400); This means the animation will take 4 seconds to complete i.e higher this number the slower the animation.
},5000); and the "5000" means 5 seconds delay.
For every second of delay you put it as 1000 ms or milliseconds of delay.

1 Seconds = 1000 ms

Hope it helps someone, all other answers are correct as well, this is just another way of doing it.

Upvotes: 2

Adnan
Adnan

Reputation: 5075

How about hiding your text view with some animation?

  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);

Upvotes: 7

M D
M D

Reputation: 47817

try View INVISIBLE or GONE like:

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

Set View visibility with view.setVisibility(View.INVISIBLE|View.VISIBLE|View.GONE);

Upvotes: 36

Farhan Shah
Farhan Shah

Reputation: 2342

hope it's work:

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

       public void run() {

          tvRQPoint.setVisibility(View.GONE);

       }

    },3000);

Upvotes: 0

rajshree
rajshree

Reputation: 800

try this...

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);
}
 }

Upvotes: 2

Kanwaljit Singh
Kanwaljit Singh

Reputation: 4377

Try this-

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);    
}
};

Upvotes: 1

Naveen
Naveen

Reputation: 1958

You are setting the text in run() method. you can hide the text in two ways

View.INVISIBLE - give the space for the textview and hide its content

View.GONE - remove the space for textview and hide its content

so call

tvRQPoint.setVisibility(View.INVISIBLE);

                   (or)

tvRQPoint.setVisibility(View.GONE);

Upvotes: 0

Prateek
Prateek

Reputation: 4013

What you are trying to do is ok but after three seconds you want to hide the textview so use setVisibility

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

Upvotes: 3

Related Questions