Android: TextView 可见性改变

Android: TextView visibility changes

我已经开始 android 编程,我正在尝试做:

  1. 让用户输入他们的登录凭据。
  2. 如果用户登录凭据有效,让他们登录。
  3. 如果登录凭据无效,则给他们一条错误消息,说明输入的用户名或密码无效。

对于最后一部分,问题是我有一个默认隐藏可见性的 TextView。我想让它显示几秒钟然后让它消失。

This post and this post 有所帮助,但他们实际上是在试图做相反的事情。

我的代码如下:

 submitButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
       // Check the validity of the user name.
       if (valid) {
          // Let the user log in.
       } else {
          // Make TextView visible for a few seconds.
       }
    }
 });

我该怎么做?

要显示任何信息或错误消息,您可以使用 pop-up 小消息一段时间。按照吐司的代码和图像。

//display in short period of time
Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT).show();

你可以用吐司。

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

Toasts in android

在您的情况下,您首先需要显示 TextView,然后将其设为 INVISIBLE

使用textView.postDelayed方法为:

   if(valid){  //let the user login }
    else
    {
         // make TextView visible here
          textView.setVisibility(View.VISIBLE);   
          //use postDelayed to hide TextView 
          textView.postDelayed(new Runnable() {
               public void run() {
               textView.setVisibility(View.INVISIBLE);
              }
         }, 3000);
        //how to make the textview visible for a few seconds
    }

试试这个

mButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mTextView.setVisibility(View.VISIBLE);
            v.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mTextView.setVisibility(View.GONE);
                }
            }, 2000);
        }
    });

您可以借助 timertask 实现此目的,因为您的 textview 是不可见的,首先使其可见,然后借助 timertask 使其再次不可见

submitButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
//check the validity of the user name
if(valid)
{
    //let the user login
}
else
{
 txt.setVisibility(View.VISIBLE);
 Timer t = new Timer(false);
 t.schedule(new TimerTask() {
 @Override
  public void run() {
   runOnUiThread(new Runnable() {
        public void run() {
            txt.setVisibility(View.INVISIBLE);
        }
    });
}
}, 5000);
}
});

但我建议如果您希望用户确认在警报对话框中显示错误或祝酒词显示错误就可以了

您可以使用处理程序来完成此操作。

 submitButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
    //check the validity of the user name
    if(valid)
    {
        //let the user login
    }
    else
    {
        //how to make the textview visible for a few seconds
new Handler().postDelayed(new Runnable()
            {
                @Override
                public void run()
                {
                        mTextView.setVisibility(View.VISIBLE);

                    }
            }, 1000/* 1sec delay */);
    }
});