TextVisibility在一段时间后发生变化

时间:2014-10-04 09:53:45

标签: java android eclipse

,我刚开始学习java for android,我已经将Textfield的TextVisibility设置为GONE,我需要将TextVisibilty更改为VISIBLE,7秒后点击Button,我搜索了互联网,找不到任何有用的东西或者我无法理解。所以,请帮助我。

2 个答案:

答案 0 :(得分:0)

尝试

final TextView yourText = (TextView) findViewById(R.id.yourTextId);
yourText.setVisibility(View.GONE);
yourText.postDelayed(new Runnable() {
        @Override
        public void run() {
            yourText.setVisibility(View.VISIBLE);
        }
    }, 7 * 1000);
按钮单击监听器中的

。 例如,在您的活动的OnCreate()中:

final TextView yourText = (TextView) findViewById(R.id.yourTextId);
Button yourButton = (Button) findViewById(R.id.yourButtonId);
yourButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                yourText.setVisibility(View.GONE);
                yourText.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        yourText.setVisibility(View.VISIBLE);
                    }
               }, 7 * 1000);
               }
        });

答案 1 :(得分:0)

在Android上,当你想要在一段时间后执行某些事情并在其他线程中执行时,通常会使用处理程序,如下所示:

final TextView yourText = (TextView) findViewById(R.id.yourTextId);
Handler handler = new Handler();
handler.postDelayed(new Runnable()) {
@Override
    public void run() {
        yourText.setVisibility(View.VISIBLE);
    }
}, 7000);

如果需要,可以在Activity中实现Runnable类,这样就不必封装任何东西:

public class MyActivity implements Runnable

然后将 this 传递给de postDelayed方法第一个参数

handler.postDelayed(this, 7000);

并在您的活动中实施run方法:

public void onCreate() {
    super.onCreate();
    setContentView(R.id.your_layout);
    /* some code */
}

@Override
public void run() {
    yourText.setVisibility(View.VISIBLE);
}

这将在你在postDelayed的第二个参数中设置的一段时间之后执行run方法中的代码,并在另一个线程中执行,这样你就可以继续在MainActivity中创建内容,比如点击按钮或其他东西。

使用示例代码编辑注释:

Handler handler1 = new Handler();
Handler handler2 = new Handler();
handler1.postDelayed(new Runnable() {
    tvt1.setVisibility(View.VISIBLE);
}, 7000);
handler2.postDelayed(new Runnable() {
    tvt2.setVisibility(View.VISIBLE);
}, 12000);