2016-11-08 8 views
4

Я хочу показать alertBox для ввода пользователем. Поэтому я добавил EditText View в alertBox. код моего alertBox является:Изменить размер EditText (любой вид), показанный в alertBox?

final EditText input = new EditText(this); 
      //input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
      input.setX(10); 
      android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); 
      builder.setMessage("Title") 
        .setCancelable(false) 
        .setView(input) 
        .setTitle("Create new Playlist") 
        .setPositiveButton("CREATE", 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, int id) { 
            // finish the current activity 
            // AlertBoxAdvance.this.finish(); 
            playlistName = input.getText().toString(); 
            dialog.cancel(); 


           } 
          }) 
        .setNegativeButton("CANCEL", 
          new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, int id) { 
            // cancel the dialog box 
            dialog.cancel(); 
           } 
          }); 
      android.app.AlertDialog alert = builder.create(); 
      alert.show(); 

Это дает следующее предупреждение диалог:

enter image description here

Но EditText не запускается откуда Название и Послание начинается оповещения (не правильно отступом). Поэтому я хочу, чтобы следующий тип EditText имел правильный отступ в диалоговом окне оповещений.

enter image description here

Как это сделать? Как изменить позицию просмотров в диалоге оповещений? Или как изменить размер представления?

+0

попробуйте использовать для этого настраиваемое представление. – mohitum

+0

Можете ли вы привести пример? –

+0

Посмотрите на этот документ: http://stackoverflow.com/documentation/android/1225/dialog/16252/custom-alert-dialog-with-edittext#t=201611080653420964273 –

ответ

1

Попробуйте это:

XML Layout:

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

    <EditText 
     android:id="@+id/editTextField" 
     android:layout_marginLeft="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="text" /> 

</LinearLayout> 

Java код:

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mActivity); 
    LayoutInflater inflater = mActivity.getLayoutInflater(); 
    final View dialogView = inflater.inflate(R.layout.dialog, null); 
    dialogBuilder.setView(dialogView); 

final EditText mEditText = (EditText) dialogView.findViewById(R.id.editTextField); 

dialogBuilder.setTitle("Title"); 
dialogBuilder.setMessage("Type your message here"); 

dialogBuilder.setPositiveButton("Yes", null); 
dialogBuilder.setNegativeButton("No", null); 

final AlertDialog alertDialog = dialogBuilder.create(); 
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 

    @Override 
    public void onShow(DialogInterface dialog) { 
     Button positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     positiveButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       String enteredTextString= mEditText.getText().toString(); 
       //To whatever with the text entered 
      } 
     }); 
     Button negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); 
     negativeButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       alertDialog.dismiss(); 
      } 
     }); 
    } 
}); 
alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
    @Override 
    public void onDismiss(DialogInterface dialog) { 

    } 
}); 
alertDialog.show(); 
+0

спасибо за ответ. Я пробую пользовательский просмотр. –

1

Вы можете попробовать использовать настраиваемое представление ... определить EditText в файле макета, например, lay.xml

Затем

builder.setMessage("Title") 
       .setCancelable(false) 
       .setContentView(R.layout.lay); 
+0

спасибо Это сработало. плюс 1 –