首页 文章

如何在对话框中创建edittext框

提问于
浏览
169

我正在尝试在对话框中创建一个edittext框来输入密码 . 当我在做的时候,我无法做到 . 我是初学者 . 请帮帮我 .

public class MainActivity extends Activity {

Button create, show, setting;
//String pass="admin";String password;

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

    create = (Button)findViewById(R.id.amcreate);
    setting = (Button)findViewById(R.id.amsetting);
    show = (Button)findViewById(R.id.amshow);
    //input = (EditText)findViewById(R.id.this);

    setting.setVisibility(View.INVISIBLE);

    create.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent myIntent1 = new Intent(view.getContext(), Create.class);
            startActivityForResult(myIntent1, 0);
        }

    });

    show.setOnClickListener(new View.OnClickListener() {
        //@SuppressWarnings("deprecation")
        public void onClick(final View view) {

            // Creating alert Dialog with one Button
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);

            //AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();

            // Setting Dialog Title
            alertDialog.setTitle("PASSWORD");

            // Setting Dialog Message
            alertDialog.setMessage("Enter Password");
            **final EditText input = new EditText(this);**
            //alertDialog.setView(input);

            // Setting Icon to Dialog
            alertDialog.setIcon(R.drawable.key);

            // Setting Positive "Yes" Button
            alertDialog.setPositiveButton("YES",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int which) {
                            // Write your code here to execute after dialog
                            Toast.makeText(getApplicationContext(),"Password Matched", Toast.LENGTH_SHORT).show();
                            Intent myIntent1 = new Intent(view.getContext(), Show.class);
                            startActivityForResult(myIntent1, 0);
                        }
                    });
            // Setting Negative "NO" Button
            alertDialog.setNegativeButton("NO",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Write your code here to execute after dialog
                            dialog.cancel();
                        }
                    });

            // closed

            // Showing Alert Message
            alertDialog.show();
        }

    });

图片

enter image description here

我想得到

enter image description here

AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
 alertDialog.setTitle("PASSWORD");
 alertDialog.setMessage("Enter Password");

 final EditText input = new EditText(MainActivity.this);
 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.MATCH_PARENT,
     LinearLayout.LayoutParams.MATCH_PARENT);
 input.setLayoutParams(lp);
 alertDialog.setView(input);
 alertDialog.setIcon(R.drawable.key);

 alertDialog.setPositiveButton("YES",
     new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int which) {
             password = input.getText().toString();
             if (password.compareTo("") == 0) {
                 if (pass.equals(password)) {
                     Toast.makeText(getApplicationContext(),
                         "Password Matched", Toast.LENGTH_SHORT).show();
                     Intent myIntent1 = new Intent(view.getContext(),
                         Show.class);
                     startActivityForResult(myIntent1, 0);
                 } else {
                     Toast.makeText(getApplicationContext(),
                         "Wrong Password!", Toast.LENGTH_SHORT).show();
                 }
             }
         }
     });

 alertDialog.setNegativeButton("NO",
     new DialogInterface.OnClickListener() {
         public void onClick(DialogInterface dialog, int which) {
             dialog.cancel();
         }
     });

 alertDialog.show();
 }

 });

8 回答

  • 1

    试试以下代码:

    alert.setTitle(R.string.WtsOnYourMind);
    
     final EditText input = new EditText(context);
     input.setHeight(100);
     input.setWidth(340);
     input.setGravity(Gravity.LEFT);
    
     input.setImeOptions(EditorInfo.IME_ACTION_DONE);
     alert.setView(input);
    
  • 4

    使用Activtiy Context

    替换它

    final EditText input = new EditText(this);
    

    通过

    final EditText input = new EditText(MainActivity.this);  
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.MATCH_PARENT,
                            LinearLayout.LayoutParams.MATCH_PARENT);
      input.setLayoutParams(lp);
      alertDialog.setView(input); // uncomment this line
    
  • 14

    我知道回答这个问题为时已晚,但是对于那些正在寻找类似于此的东西的人来说,这是一个带有edittext的警报器的简单代码

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    

    要么

    new AlertDialog.Builder(mContext, R.style.MyCustomDialogTheme);
    

    如果要更改对话框的主题 .

    final EditText edittext = new EditText(ActivityContext);
    alert.setMessage("Enter Your Message");
    alert.setTitle("Enter Your Title");
    
    alert.setView(edittext);
    
    alert.setPositiveButton("Yes Option", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            //What ever you want to do with the value
            Editable YouEditTextValue = edittext.getText();
            //OR
            String YouEditTextValue = edittext.getText().toString();
        }
    });
    
    alert.setNegativeButton("No Option", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // what ever you want to do with No option.
        }
    });
    
    alert.show();
    
  • 4

    最简单的是 .

    • 为对话框创建xml布局文件 . 添加你想要的任何视图,如EditText,ListView,Spinner等 .

    膨胀此视图并将其设置为AlertDialog

    让我们先从布局文件开始 .

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:orientation="vertical">
    
    
        <EditText
            android:id="@+id/etComments"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="top"
            android:hint="Enter comments(Optional)"
            android:inputType="textMultiLine"
            android:lines="8"
            android:maxLines="3"
            android:minLines="6"
            android:scrollbars="vertical" />
    
    </LinearLayout>
    

    final View view = layoutInflater.inflate(R.layout.xml_file_created_above, null);
    AlertDialog alertDialog = new AlertDialog.Builder(ct).create();
    alertDialog.setTitle("Your Title Here");
    alertDialog.setIcon("Icon id here");
    alertDialog.setCancelable(false);
    Constant.alertDialog.setMessage("Your Message Here");
    
    
    final EditText etComments = (EditText) view.findViewById(R.id.etComments);
    
    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
    
        }
    });
    
    
    alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            alertDialog.dismiss()
        }
    });
    
    
    alertDialog.setView(view);
    alertDialog.show();
    
  • 236

    简化版

    final EditText taskEditText = new EditText(this);
    AlertDialog dialog = new AlertDialog.Builder(this)
            .setTitle("Add a new task")
            .setMessage("What do you want to do next?")
            .setView(taskEditText)
            .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String task = String.valueOf(taskEditText.getText());
                    SQLiteDatabase db = mHelper.getWritableDatabase();
                    ContentValues values = new ContentValues();
                    values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task);
                    db.insertWithOnConflict(TaskContract.TaskEntry.TABLE,
                            null,
                            values,
                            SQLiteDatabase.CONFLICT_REPLACE);
                    db.close();
                    updateUI();
                }
            })
            .setNegativeButton("Cancel", null)
            .create();
    dialog.show();
    return true;
    
  • 15

    您还可以通过创建xml文件来创建自定义警报对话框 .

    dialoglayout.xml

    <EditText
        android:id="@+id/dialog_txt_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:hint="Name"
        android:singleLine="true" >
    
        <requestFocus />
      </EditText>
       <Button
            android:id="@+id/btn_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="60dp"
            android:background="@drawable/red"
            android:padding="5dp"
            android:textColor="#ffffff"
            android:text="Submit" />
    
        <Button
            android:id="@+id/btn_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@+id/btn_login"
            android:background="@drawable/grey"
            android:padding="5dp"
            android:text="Cancel" />
    

    Java代码:

    @Override//to popup alert dialog
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        showDialog(DIALOG_LOGIN);
    });
    
    
    @Override
    protected Dialog onCreateDialog(int id) {
        AlertDialog dialogDetails = null;
    
        switch (id) {
            case DIALOG_LOGIN:
                LayoutInflater inflater = LayoutInflater.from(this);
                View dialogview = inflater.inflate(R.layout.dialoglayout, null);
                AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(this);
                dialogbuilder.setTitle("Title");
                dialogbuilder.setView(dialogview);
                dialogDetails = dialogbuilder.create();
                break;
        }
        return dialogDetails;
    }
    
    @Override
    protected void onPrepareDialog(int id, Dialog dialog) {
        switch (id) {
            case DIALOG_LOGIN:
                 final AlertDialog alertDialog = (AlertDialog) dialog;
                 Button loginbutton = (Button) alertDialog
                    .findViewById(R.id.btn_login);
                 Button cancelbutton = (Button) alertDialog
                    .findViewById(R.id.btn_cancel);
                 userName = (EditText) alertDialog
                    .findViewById(R.id.dialog_txt_name);
                 loginbutton.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          String name = userName.getText().toString();
                          Toast.makeText(Activity.this, name,Toast.LENGTH_SHORT).show();
                 });
                 cancelbutton.setOnClickListener(new View.OnClickListener() {
                          @Override
                          public void onClick(View v) {
                               alertDialog.dismiss();
                          }
                 });
                 break;
       }
    }
    
  • 11

    在布局参数中设置边距在Alertdialog中不起作用 . 您必须在父布局中设置填充,然后在该布局中添加edittext .

    这是我工作的kotlin代码......

    val alert =  AlertDialog.Builder(context!!)
    
    val edittext = EditText(context!!)
    edittext.hint = "Enter Name"
    edittext.maxLines = 1
    
    val layout = FrameLayout(context!!)
    
    //set padding in parent layout
    layout.setPaddingRelative(45,15,45,0)
    
    alert.setTitle(title)
    
    layout.addView(edittext)
    
    alert.setView(layout)
    
    alert.setPositiveButton(getString(R.string.label_save), DialogInterface.OnClickListener {
    
        dialog, which ->
        run {
    
            val qName = edittext.text.toString()
    
            Utility.hideKeyboard(context!!, dialogView!!)
    
        }
    
    })
    alert.setNegativeButton(getString(R.string.label_cancel), DialogInterface.OnClickListener {
    
                dialog, which ->
                run {
                    dismiss()
                }
    
    })
    
    alert.show()
    
  • 150

    也许停止与Anko图书馆争夺Kotlin?...

    alert( "Title", "Message") {
                var input: EditText? = null
                customView {
                    input = editText() {
                        hint = "Write your message in here"
                    }
                }
                yesButton { toast("field text: ${input?.text}") }
                negativeButton("Nope") { } // Empty dismisses the alert
            }.show()
    

相关问题