AlertDialog中的Android TextView可见性不会更改

时间:2015-09-28 14:27:33

标签: android textview android-alertdialog

我正在使用使用android.suport.v7.app.AlertDialog创建的 AlertDialog ,我正在为Dialog设置一些自定义布局,其中包含一些EditTexts和一些TextView。

使用的TextView最初的可见性设置为GONE

我主要使用TextViews来提示用户在EditText字段中输入错误。

因此,当我尝试将TextView的可见性切换为VISIBLE以显示错误消息时,可见性不会发生变化。

layoutS的我的XML文件是:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/contactName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:hint="@string/sampark_naam"
        android:layout_marginEnd="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"
        android:layout_marginRight="5dp">
        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/noName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/no_name_error"
        android:textColor="@android:color/holo_red_dark"
        android:layout_marginEnd="5dp"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginRight="5dp"
        android:visibility="gone"/>
</LinearLayout>

使用的AlertDialog是:

final Context context = view.getContext();
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View aDrishya = layoutInflater.inflate(R.layout.layoutS, null, false);
vNaam = (EditText) aDrishya.findViewById(R.id.contactName);
nameError = (TextView) aDrishya.findViewById(R.id.noName);
sSanddok = new AlertDialog.Builder(context)
                          .setView(aDrishya)
                          .setTitle("Add A New Contact")
                          .setPositiveButton("Add +", new PositiveButton(context))
                          .setNegativeButton("Pick", new null);
sSanddok.show();

在肯定按钮中,我检查输入的contactName为:

if(vNaam.getText().toString().equals("")) {
    Toast.makeText(this, "No Name", Toast.LENGTH_SHORT).show();
    nameError.setVisibility(View.VISIBLE);
} else {
    nameError.setVisibility(View.GONE);
}

显示Toast,但未显示TextView

知道这里有什么问题以及如何解决它?

1 个答案:

答案 0 :(得分:0)

您可以尝试更改并运行此代码,看看它是否有效..

警报对话框更改:

sSanddok = new AlertDialog.Builder(context)
                          .setView(R.layout.layoutS)
                          .setTitle("Add A New Contact")
                          .setPositiveButton("Add +", null)
                          .setNegativeButton("Pick",null);

sSanddok.show();



sSanddok.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //if edit text value is empty do this  
        TextView tv = (TextView)sSanddok.findViewById(R.id.noName);
        tv.setVisibility(View.VISIBLE);
    }
});

xml中的T​​extView可见性设置为已消失.. 嗨这对我有用...试试这段代码吧