几秒钟后再次看到TextView不可见

时间:2018-02-20 17:27:34

标签: android

我目前正在探索如何使用EditText,Button和TextView。 我的程序有一个EditText,当EditText中没有输入任何内容并单击一个按钮时,TextView将显示3秒钟并再次变为不可见。
但是,当我第二次单击该按钮并且仍然清除EditText时,TextView将不会出现 如何让TextView再次显示?

public class NameActivity extends AppCompatActivity{

private EditText editNameText;
private TextView wrongInputTV;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    Log.i(Values.TAG, "NameActivity onCreate");

    editNameText = (EditText) findViewById(R.id.editNameText);
    editNameText.getText().clear();
    wrongInputTV = (TextView) findViewById(R.id.wrongInputTV);
    wrongInputTV.setTextColor(Color.RED);
    ((Button) findViewById(R.id.sendNameBtn)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            goToNextActivity();
        }
    });
}

private void goToNextActivity(){
    if(!TextUtils.isEmpty(editNameText.getText())) {;
        Intent intent = new Intent(this, DateActivity.class);
        intent.putExtra(Values.NAME_KEY, editNameText.getText().toString());
        startActivity(intent);
    }else {
        wrongInputTV.setText("Please enter a valid name");
        wrongInputTV.postDelayed(new Runnable() {
            @Override
            public void run() {
                wrongInputTV.setVisibility(View.INVISIBLE);
            }
        }, 3000);

        }
    }
}

3 个答案:

答案 0 :(得分:3)

在runnable中进行VISIBLE时,您必须再次制作textview INVISIBLE

 wrongInputTV.setVisibility(View.VISIBLE);

因此,goToNextActivity()应写成如下: -

private void goToNextActivity(){
    if(!TextUtils.isEmpty(editNameText.getText())) {;
        Intent intent = new Intent(this, DateActivity.class);
        intent.putExtra(Values.NAME_KEY, editNameText.getText().toString());
        startActivity(intent);
    }else {
        wrongInputTV.setVisibility(View.VISIBLE);
        wrongInputTV.setText("Please enter a valid name");
        wrongInputTV.postDelayed(new Runnable() {
            @Override
            public void run() {
                wrongInputTV.setVisibility(View.INVISIBLE);
            }
        }, 3000);

   }

注意: 可以在OnCreate方法中设置初始VIEW状态GONE / INVISIBLE。

答案 1 :(得分:0)

使用TextView时,了解基于视图可见性可以看到的内容之间的区别以及您可以看到的内容之间的区别非常重要。视图的文字

您的原始代码工作一次的原因,但永远不再是您的TextView开始可见(您可以"请参阅&#34 ;但是没有什么可看的。然后,您拨打setText(),将其设为可见非空(现在可以查看)。然后,在三秒钟之后,您将其设为隐藏非空(所以即使有什么东西要看,也无法看到它)

但是,在您创建VISIBLE后,代码中的任何内容都不会将视图的可见性返回更改为INVISIBLE。 @ lib4的答案涵盖(单向)如何做到这一点。

答案 2 :(得分:0)

这就是我处理它的方式....

public class MainActivity extends AppCompatActivity {

    TextView textView;
    EditText editText;
    Button button;

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

        textView = findViewById(R.id.textView);
        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);

        textView.setVisibility(View.GONE);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(editText.getText().toString().equals("") || editText.getText().toString() == null) {
                    textView.setVisibility(View.VISIBLE);
                    final Handler handler = new Handler();
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            textView.setVisibility(View.GONE);
                        }
                    }, 3000);
                } else {
                    //go somewhere
                }
            }
        });
    }
}

简单XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp"
    tools:context="net.pixeledstudio.hidetextview.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Type something in the text view"
        android:gravity="center"
        android:id="@+id/textView"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Type something"
        android:id="@+id/editText"
        android:layout_marginTop="25dp"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Submit"
        android:id="@+id/button"
        android:layout_marginTop="25dp"/>

</LinearLayout>