Добавьте большой размер в EditText в Android AlertDialog
У меня есть EditText внутри AlertDialog. Это выглядит так.
![enter image description here]()
Посмотрите, где написано tddjdjck, и как он сильно отступил. Это то, что я хочу (я использовал setPadding
с левым и правым набором до 50), но я также хочу, чтобы синяя линия под ним тоже была отступом. Как это сделать?
Код, который я использую, приведен ниже:
final AlertDialog.Builder alert = new AlertDialog.Builder(thisActivity);
final EditText input = new EditText(thisActivity);
input.setSingleLine();
input.setPadding(50, 0, 50, 0);
alert.setTitle("by...");
alert.setMessage("enter the name of the person who did:");
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
Спасибо
Ответы
Ответ 1
final AlertDialog.Builder alert = new AlertDialog.Builder(thisActivity);
final EditText input = new EditText(thisActivity);
input.setSingleLine();
FrameLayout container = new FrameLayout(thisActivity);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = getResources().getDimensionPixelSize(R.dimen.dialog_margin);
input.setLayoutParams(params);
container.addView(input);
alert.setTitle("by...");
alert.setMessage("test message");
alert.setView(container);
Убедитесь, что вы добавили еще одну строку в файл ресурсов dimens.xml, например
<dimen name="dialog_margin">20dp</dimen>
Ответ 2
Вы можете передать параметр интервала в методе setView
alert.setView(view ,left_space , top_space , right_space , bottom_space);
Итак, в вашем случае вы можете попробовать это
alert.setView(input , 50 ,0, 50 , 0);
Ответ 3
Вот функция расширения Kotlin для Builder для установки вида EditText.
fun android.support.v7.app.AlertDialog.Builder.setEditText(editText: EditText): AlertDialog.Builder {
fun dpToPixel(dp: Float, context: Context): Float {
val resources = context.resources
val metrics = resources.displayMetrics
return dp * (metrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
}
val container = FrameLayout(context)
container.addView(editText)
val containerParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
val margins = 16F
containerParams.topMargin = dpToPixel(margins / 2, context).toInt()
containerParams.leftMargin = dpToPixel(margins, context).toInt()
containerParams.rightMargin = dpToPixel(margins, context).toInt()
container.layoutParams = containerParams
val superContainer = FrameLayout(context)
superContainer.addView(container)
setView(superContainer)
return this
}
Пример использования
val editText = EditText(this)
editText.hint = "Hint"
AlertDialog.Builder(this)
.setTitle("Title")
.setEditText(editText)
.setPositiveButton("OK", { _: DialogInterface, _: Int ->
// Do your work with text here
val text = editText.text.toString()
Toast.makeText(applicationContext, text, Toast.LENGTH_SHORT).show()
})
.setNegativeButton("Cancel", null)
.show()
Результат
![Результат]()