【发布时间】:2016-08-11 03:47:03
【问题描述】:
我正在尝试创建一个 Alert Dialog 框,例如 Lollipop,一切正常,但我被困在 EditText 的一个部分>
我想要一个带有下划线的 EditText 和 20dp 的 左右边距。对于下划线,我尝试了 setBackground() ,它工作正常.
但是有一个问题是 setBackground() 不能工作 API 16级以下。
对于 setMargin 我试过了
final EditText input = new EditText(MainActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(30,0,30,0);
input.setLayoutParams(lp);
input.setGravity(View.TEXT_ALIGNMENT_GRAVITY);
input.setBackground(getResources().getDrawable(R.drawable.edit_text_line));
builder.setView(input);
但使用父级宽度编辑文本。
完整代码
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Message");
builder.setMessage("Do you want to\n"+""+"exit from app");
final EditText input = new EditText(MainActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(30,0,30,0);
input.setLayoutParams(lp);
input.setGravity(View.TEXT_ALIGNMENT_GRAVITY);
input.setBackground(getResources().getDrawable(R.drawable.edit_text_line)); //call reequires api 16 and above
builder.setView(input);
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "You exit from app " + input.getText().toString(),
Toast.LENGTH_LONG).show();
}
});
AlertDialog alert = builder.create();
alert.show();
Button nbutton = alert.getButton(DialogInterface.BUTTON_NEGATIVE);
nbutton.setTextColor(Color.parseColor("#7e7e7e"));
Button pbutton = alert.getButton(DialogInterface.BUTTON_POSITIVE);
pbutton.setTextColor(Color.parseColor("#109c8f"));
有什么方法可以为 EditText 设置 background 在 API 16 下工作并且 setMargin 左右为 编辑文本.
【问题讨论】:
-
margin 的一个解决方法是添加一个线性布局并设置左右填充到这个布局。将您的编辑文本放在此线性布局中,而不是将其直接放在对话框中。
-
尝试使用 ViewGroup.MarginLayoutParams ..!!!
-
@Binil S 请参阅下面的答案。
标签: android android-edittext android-alertdialog android-5.1.1-lollipop