Android setError(“错误”)在Textview中不起作用

我们可以在Edittext中成功设置错误,但是无法在textview中设置。 有什么问题吗?? 我试过了

((TextView) findViewById(R.id.df)).requestFocus(); ((TextView) findViewById(R.id.df)).setSelected(true); ((TextView) findViewById(R.id.df)).setError("akjshbd"); 

但我不会popup错误。

Textview错误

Solutions Collecting From Web of "Android setError(“错误”)在Textview中不起作用"

其实,你可以使用setError作为textView并显示其popup。

您只需要使用与EditText相同的样式。

只需在xml中添加textView的下一个属性:

 style="@android:style/Widget.EditText" 

默认的TextView是不可聚焦的。 所以,你需要设置android:focusable =“true”android:focusableInTouchMode =“true”

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusable="true" android:focusableInTouchMode="true" android:text="@string/hello_world" /> 

而且不需要设置setSelected(true)。

 ((TextView) findViewById(R.id.df)).requestFocus(); ((TextView) findViewById(R.id.df)).setError("akjshbd"); 

这是唯一你需要在TextView上获得预期的setError行为

 android:focusable="true" android:clickable="true" android:focusableInTouchMode="true" 

代码片段:你必须requestFocus(); 一个视图来显示错误。

  // Check for a valid email address. if (TextUtils.isEmpty(mEmail)) { mEmailView.setError(getString(R.string.error_field_required)); focusView = mEmailView; cancel = true; } else if (!mEmail.contains("@")) { mEmailView.setError(getString(R.string.error_invalid_email)); focusView = mEmailView; cancel = true; } if (cancel) { // There was an error; don't attempt login and focus the first // form field with an error. focusView.requestFocus(); } else { // Show a progress spinner, and kick off a background task to // perform the user login attempt. // showProgress(true); // mAuthTask = new UserLoginTask(); // mAuthTask.execute((Void) null); ParseUser.logInInBackground(mEmail, mPassword, new LogInCallback() { @Override public void done(ParseUser user, ParseException e) { finishAndStartCardActivity(); } }); }