我只是想在我知道的android中以編程方式創建按鈕。但事情是在一行中創建具有特定數字的按鈕,並且完全取決於屏幕的方向。以編程方式在android中創建按鈕
例如,如果在縱向模式下的設備我只需要在一排兩粒扣和景觀三個或四個(移動)和四個或五個(平板電腦)與對齊
任何建議或想法會是有幫助的
編輯
我曾嘗試下面的代碼和得到的東西
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
pwidth = size.x;
lHeight = size.x;
pheight = size.y;
lWidth = size.y +16;
scrollView = new ScrollView(MainActivity.this);
scrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
gl = new GridLayout(MainActivity.this);
gl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
gl.setOrientation(GridLayout.HORIZONTAL);
int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
//code for portrait mode
Toast.makeText(getApplicationContext(), "PORTRAIT", Toast.LENGTH_SHORT).show();
if (pheight > pwidth) {
columnSize = pheight/pwidth;
gl.setColumnCount(columnSize + 1);
gl.setRowCount(columnSize + 1);
Log.i("PORTRAIT WIDTH", String.valueOf(pwidth));
Log.i("PORTRAIT HEIGHT", String.valueOf(pheight));
Log.i("PORTRAIT COLUMN SIZE ", String.valueOf(columnSize));
Log.i("PORTRAIT ROW SIZE ", String.valueOf(rowSize));
}/*else if(width>height){
}*/
} else {
//code for landscape mode
Toast.makeText(getApplicationContext(), "LANDSCAPE", Toast.LENGTH_SHORT).show();
if (lWidth < lHeight) {
columnSize = lWidth/400;
gl.setColumnCount(columnSize + 1);
gl.setRowCount(columnSize);
Log.i("LANDSCAPE WIDTH", String.valueOf(lWidth));
Log.i("LANDSCAPE HEIGHT", String.valueOf(lHeight));
Log.i("LANDSCAPE COLUMN SIZE ", String.valueOf(columnSize));
Log.i("LANDSCAPE ROW SIZE ", String.valueOf(columnSize));
}
}
Log.i("ROW SIZE ", String.valueOf(columnSize));
button = new Button[9];
for (int i = 0; i < 9; i++) {
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.height = 200;
param.width = GridLayout.LayoutParams.WRAP_CONTENT;
param.rightMargin = 100;
param.topMargin = 100;
param.leftMargin = 100;
param.setGravity(Gravity.CENTER);
button[i] = new Button(MainActivity.this);
button[i].setLayoutParams(param);
button[i].setText("Button " + String.valueOf(i));
button[i].setTextSize(20);
button[i].setPadding(50, 50, 50, 50);
gl.addView(button[i]);
}
scrollView.addView(gl);
setContentView(scrollView);
for (item = 0; item < 9; item++) {
button[item].setOnClickListener(new View.OnClickListener() {
int pos = item;
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), pos + " Clicked",
Toast.LENGTH_SHORT).show();
}
});
}
只需保持方向固定。這是首先想到的想法。 –
實際上,我會說它最終取決於父ViewGroup的寬度,所以你可以檢查一下,看看有多少個Buttons適合。或者,使用類似[[FlowLayout]](http://stackoverflow.com/questions/4474237/how-can-i-do-something-like-a-flowlayout-in-android),如果你不想要做數學。 –
爲縱向和橫向模式創建單獨的佈局。 – Sharath