How to add TextView and EditText using default AlertDialog programmatically

前端 未结 3 1422
别跟我提以往
别跟我提以往 2021-02-14 13:51

I\'ve been trying to add two elements in a default AlertDialog but I can\'t seem to make it work. Here\'s my code:

// START Dialog
    AlertDialog.Builder alertD         


        
相关标签:
3条回答
  • 2021-02-14 14:15

    Make one .xml file which include whatever view you want like below.

    <?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:orientation="vertical">
    
    <TextView
            android:id="@+id/textView1"
            android:layout_width="312dp"
            android:layout_height="wrap_content"
            android:text="Enter your email address :"
            android:layout_marginLeft="5dp"
            android:textAppearance="?android:attr/textAppearanceSmall"/>
    
    <EditText
            android:id="@+id/dialog1Edittext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:layout_marginTop="10dp"
            android:inputType="textEmailAddress">
    
        <requestFocus/>
    </EditText>
    

    After that in your .java file implements following code.

    View view = View.inflate(this, R.layout.yourxmlname, null);
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    // Now set the dialog's content
    alert.setContentView(view);
    

    Hope it helps you.

    0 讨论(0)
  • 2021-02-14 14:21
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    
            LinearLayout layout = new LinearLayout(this);
            LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            layout.setOrientation(LinearLayout.VERTICAL);
            layout.setLayoutParams(parms);
    
            layout.setGravity(Gravity.CLIP_VERTICAL);
            layout.setPadding(2, 2, 2, 2);
    
            TextView tv = new TextView(this);
            tv.setText("Text View title");
            tv.setPadding(40, 40, 40, 40);
            tv.setGravity(Gravity.CENTER);
            tv.setTextSize(20);
    
            EditText et = new EditText(this);
            etStr = et.getText().toString();
            TextView tv1 = new TextView(this);
            tv1.setText("Input Student ID");
    
            LinearLayout.LayoutParams tv1Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            tv1Params.bottomMargin = 5;
            layout.addView(tv1,tv1Params);
            layout.addView(et, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    
            alertDialogBuilder.setView(layout);
            alertDialogBuilder.setTitle(title);
            // alertDialogBuilder.setMessage("Input Student ID");
            alertDialogBuilder.setCustomTitle(tv);
    
            if (isError)
                alertDialogBuilder.setIcon(R.drawable.icon_warning);
            // alertDialogBuilder.setMessage(message);
            alertDialogBuilder.setCancelable(false);
    
            // Setting Negative "Cancel" Button
            alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    dialog.cancel();
                }
            });
    
            // Setting Positive "OK" Button
            alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (isError)
                        finish();
                    else {
                          Intent intent = new Intent(ChangeDeviceActivity.this,
                          MyPageActivity.class); startActivity(intent);
                    }
                }
            });
    
            AlertDialog alertDialog = alertDialogBuilder.create();
    
            try {
                alertDialog.show();
            } catch (Exception e) {
                // WindowManager$BadTokenException will be caught and the app would
                // not display the 'Force Close' message
                e.printStackTrace();
            }
    
    0 讨论(0)
  • 2021-02-14 14:24

    When calling setView() the original TextView holding the message gets hidden. You need to

    • create a small layout xml and put the EditText and a TextView to it
    • inflate the layout
    • get references of the views with findViewById()
    • do something with the views
    0 讨论(0)
提交回复
热议问题