2010-10-28 52 views
4

我想以编程方式定义我的程序布局,并在某个位置添加一个按钮。我没有使用布局xml作为内容视图。Android,以编程方式布置按钮视图?

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); 

高度和宽度不能正常工作。

+1

您可以更具体地了解它如何不“正常工作?”。你可能也想考虑使用DIP代替PX – 2010-10-28 15:56:30

+0

已经在下面回答了,这是一个密度问题。我感到困惑的原因是因为布局编辑器即使在输入像素时也能很好地进行设置,但我想它会自动执行DPI检测和修正(或按照前面所述转换为倾角) – Hamid 2010-10-29 08:53:11

回答

3

嗨,你可以通过设置布局PARAMS

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

高度和宽度也不会如u希望,因为你不使用密度无关的像素(DIP)
您在此处设置的值是像素
您可以通过
final float scale = getResources().getDisplayMetrics().density;
int dip = (int) (60 * scale + 0.5f);

像素转换成倾角你会得到更准确的结果