我正在嘗試爲遊戲編寫菜單,現在想要進行關卡選擇。它應該有三行,每行5個按鈕。RelativeLayout中的位置ImageButtons
for(int i=0; i<3; ++i){
for(int j=0; j<5; ++j){
ImageButton button = new ImageButton(this);
RelativeLayout.LayoutParams paramsBut = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
paramsBut.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
paramsBut.addRule(RelativeLayout.ALIGN_PARENT_TOP);
int marginLeft = (int)((float)(sizeLeftWidth/6) * (j+1)) + j*buttonSize;
int marginTop = (int)((float)(sizeLeftHeight/4) * (i+1)) + i*buttonSize;
paramsBut.leftMargin = marginLeft;
paramsBut.topMargin = marginTop;
button.setAdjustViewBounds(true);
button.setMaxWidth(buttonSize);
button.setMaxHeight(buttonSize);
button.setBackgroundDrawable(null);
Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.level),buttonSize,buttonSize,false);
Drawable d = new BitmapDrawable(bmp);
button.setImageDrawable(d);
layout.addView(button,paramsBut);
}
}
的RelativeLayout:
RelativeLayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
layout.setLayoutParams(params);
的問題是,按鈕是不是在正確的位置,我認爲這個問題是與利潤率。 我是不是正確的利潤率,還是整個代碼完全愚蠢? (我總是很高興,如果我得到提示如何提高我的編程風格^^)
好吧我看到一個LinearLayout會爲我的目的更有意義,但我不認爲一個XML(我使用他們一些thimes)將有所幫助。在xml文件中,我必須拖放15個按鈕,然後在代碼中找到它們並更改它們的屬性。在代碼中創建它們的版本更好,還是我有一個思維錯誤? – Mister004
一旦習慣了XML佈局文件,它實際上更容易一些,並且允許您不使用大量代碼來初始化UI(特別是非常大的UI)。您也可以重新使用XML佈局文件,例如,如果您正在創建自己的列表適配器,以使用具有您自己的自定義佈局的項目填充ListView。 Android絕對不會**你打算從代碼初始化UI。 – afollestad
另外,使用XML可以確保您的用戶界面可以在所有屏幕尺寸上工作。你不應該使用px來表示視圖的寬度和高度,你應該使用dp(它會自動將UI縮放到他們應該在不同屏幕上的大小,從手機到平板電腦)。 – afollestad