Reputation:
I want to show an alertBox for user input. So I've added EditText View in alertBox. code of my alertBox is:
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();
This gives following alert dialogue:
But EditText is not starting from where Title and Message of alert starts (not properly indented). So I want following type of EditText which has proper indentation in the alert dialogue.
How to do this? How to change position of views in alert dialogue? Or how to change size of view?
Upvotes: 4
Views: 100
Reputation: 526
You may try using a custom view... define the EditText in a layout file, say, lay.xml
Then
builder.setMessage("Title")
.setCancelable(false)
.setContentView(R.layout.lay);
Upvotes: 1
Reputation: 936
Try this:
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 Code:
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();
Upvotes: 1