How to add TextView and EditText using default AlertDialog software

I am trying to add two elements to AlertDialog by default, but I cannot get it to work. Here is my code:

// START Dialog AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); TextView tv = new TextView(this); tv.setText(title); tv.setPadding(40, 40, 40, 40); tv.setGravity(Gravity.CENTER); tv.setTextSize(20); EditText et = new EditText(this); etStr = et.getText().toString(); alertDialogBuilder.setView(et); 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 "Yes" 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(); } 

So far this is only an EditText with the message set by alertDialogBuilder.setMessage("Input Student ID"); but I want to make it a TextView so that I can justify it in the center. How to do it?

+6
source share
3 answers
  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(); } 
+23
source

Make one .xml file that includes any view you want, as shown 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, the following code is implemented in your .java file.

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

Hope this helps you.

+2
source

When setView() called, the original TextView containing the message is hidden. You need

  • create a small xml layout and put EditText and TextView in it
  • inflate layout
  • get links to views using findViewById()
  • do something with representations
+1
source

Source: https://habr.com/ru/post/952957/


All Articles