Android, программно верстать вид кнопки? - PullRequest
4 голосов
/ 28 октября 2010

Я пытаюсь программно определить макет моей программы и добавить к ней кнопку в определенной позиции. Я не использую макет XML в качестве представления содержимого.

RelativeLayout mainLayout;
    mainLayout = new RelativeLayout(this);
    mainLayout.setLayoutParams(new
LayoutParams(LayoutParams.FILL_PARENT,android.view.ViewGroup.LayoutParams.FILL_PARENT));

Затем я добавил кнопку, к которой я хочу применить свойства

layout align center
parent align left
height 60px
width 60px

вот кнопка пока

Button BtnNext = new Button(this);
    BtnNext.setWidth(60);
    BtnNext.setHeight(60);
    BtnNext.setFocusable(true);
    BtnNext.setId(idBtnNext);
    BtnNext.setText("Next");
    mainLayout.addView(BtnNext, 1);

Высота и ширина НЕ работают правильно.

Ответы [ 2 ]

3 голосов
/ 29 октября 2010

Привет, вы можете попробовать, установив параметры макета

  RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  rel_btn.height = 60;
  rel_btn.width = 60;
  BtnNext.setLayoutParams(rel_btn);

Вы также можете добавить правила и установить поля для кнопки, установив относительные параметры макета, такие как

 rel_btn.addRule(RelativeLayout.CENTER_VERTICAL);
 rel_btn.leftMargin = 220;
2 голосов
/ 28 октября 2010

Высота и ширина не будут такими, как вы хотите, потому что вы не используете независимый от плотности пиксель (dip)
Значение, которое вы здесь задаете, находится в пикселях
Вы можете преобразовать пиксель в dip, используя
final float scale = getResources().getDisplayMetrics().density;<br> int dip = (int) (60 * scale + 0.5f);
Вы получите более точный результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...