2010-10-28 51 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);

像素轉換成傾角你會得到更準確的結果