2012-06-16 3 views
25

В настоящее время я делаю приложение для Android, которое содержит диалоговое окно настройки предупреждения. Он содержит кнопку, но я не могу установить маркер для кнопки. код приведен ниже. setmargin метод не работаетКак установить маржу динамически в Android?

AlertDialog.Builder myDialog = new AlertDialog.Builder(Login.this); 
Button button = new Button(Login.this); 

button.setText("Send"); 
LayoutParams buttonLayoutParams 
    = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

button.setLayoutParams(buttonLayoutParams); 

resetPassword=editText.getText().toString(); 

LinearLayout layout = new LinearLayout(Login.this); 
layout.setOrientation(LinearLayout.VERTICAL); 
layout.addView(textView); 
layout.addView(editText); 
layout.addView(button); 

myDialog.setView(layout); 

ответ

44

Писать следующий код для установки отступа, он может помочь вам.

AlertDialog.Builder myDialog = new AlertDialog.Builder(Login.this); 
Button button = new Button(Login.this); 
EditText editText = new EditText(Login.this); 
TextView textView = new TextView(Login.this); 
button.setText("Send"); 
LinearLayout.LayoutParams buttonLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
buttonLayoutParams.setMargins(50, 10, 0, 0); 
button.setLayoutParams(buttonLayoutParams); 
String resetPassword = editText.getText().toString(); 
LinearLayout layout = new LinearLayout(Login.this); 
layout.setOrientation(LinearLayout.VERTICAL); 
layout.addView(textView); 
layout.addView(editText); 
layout.addView(button); 
myDialog.setView(layout); 
myDialog.show(); 

Использование LinearLayout.LayoutParams или RelativeLayout.LayoutParams в соответствии с родительским макетом зрения ребенка

+0

не работает. кнопка находится внутри alertdialog – user1057197

+0

См. мой отредактированный ответ, он работает для меня. –

+1

нет не работает. он показывает ошибку при добавлении броска в buttonlayoutparams в методе setMargin. – user1057197

2
buttonLayoutParams.bottomMargin 
buttonLayoutParams.topMargin 
buttonLayoutParams.leftMargin 
buttonLayoutParams.rightMargin 

может быть использована для установки полого

+0

не работает – user1057197

+1

Вы задаете параметры макета для своего 'LinearLayout'? – user1458071

2

Метод setMargin() доступна, если вы используете LinearLayout.LayoutParams но если вы используете ViewGroup.LayoutParams. Дипак Кешария ссылается на это, но не говорит так много слов.

0
You can set in LinearLayout margin 

LinearLayout ll = new LinearLayout(this); 
ll.setOrientation(LinearLayout.VERTICAL); 
LinearLayout.LayoutParams layoutParams = new 
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.WRAP_CONTENT); 
layoutParams.setMargins(30, 20, 30, 0); 
Button okButton=new Button(this); 
okButton.setText("some text"); 
ll.addView(okButton, layoutParams);