public class StartGameActivity extends ActionBarActivity {
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_game);
SharedPreferences sharedPref= PreferenceManager.getDefaultSharedPreferences(this);
int numColumns=Integer.parseInt(sharedPref.getString("Grid", "3").toString());
// create a RelativeLayout
RelativeLayout relativeLayout = new RelativeLayout(this);
//LinearLayout linearLayout = new LinearLayout(this);
// define the RelativeLayout layout parameters.
//LinearLayout.LayoutParams linearLayoutparams=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
DisplayMetrics metrics=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width=metrics.widthPixels;
int height=metrics.heightPixels;
RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(width,height);
RelativeLayout.LayoutParams relativeLayoutParams1 = new RelativeLayout.LayoutParams(width,height);
GridLayout gridLayout=new GridLayout(this);
GridLayout.LayoutParams gridLayoutParams = new GridLayout.LayoutParams();
gridLayoutParams.setGravity(Gravity.FILL_HORIZONTAL);
gridLayout.setColumnCount(numColumns);
gridLayout.setRowCount(numColumns);
gridLayout.setMinimumHeight(height);
gridLayout.setMinimumWidth(width);
for(int i=0;i<numColumns*numColumns;i++)
{
Button button=new Button(this);
button.setWidth(width/numColumns);
button.setHeight(width/numColumns);
button.setMinWidth(width/numColumns);
button.setMinHeight(width/numColumns);
button.setGravity(Gravity.FILL);
//buttonForEveryRow++;
//columIndex++;
gridLayout.addView(button);
}
relativeLayout.addView(gridLayout,relativeLayoutParams1);
setContentView(relativeLayout,relativeLayoutParams);
}
}은 부모 레이아웃입니다.
그래서 FOR 루프 내부의 모든 button.set..
라인을 제거합니다 (gridLayout.addView 선 후) 끝에 다음 줄을 추가
ViewGroup.LayoutParams par = button.getLayoutParams();
par.width=width/numColumns;
par.height=width/numColumns;
button.setLayoutParams(par);
http://developer.android.com/reference/android/view/View.html#getLayoutParams%28%29 :
모든 뷰가 있어야한다 레이아웃 매개 변수. 이 뷰의 부모에게 매개 변수를 제공하여 배열 방법을 지정합니다.
너비 계산에서 기본적으로 안드로이드가 추가 한 패딩/간격을 고려하지 않았습니다. http://stackoverflow.com/questions/21455495/gridlayoutnot-gridview-space-between-the-cells를 참조하십시오. 나는 그것을 시도했지만 나를 위해 일하지 않았다. – faizal
안녕하세요 @faizal .. 안녕하세요 @faizal .. 답장을 보내 주셔서 감사합니다. 그것은 나에게도 그 일을 너무 많이 .. 아직도 동일을 게재 – user3371005
for 루프 내부에, addView 라인 다음에 끝에 다음 줄을 추가하십시오 : ViewGroup.LayoutParams par = button.getLayoutParams(); par.width = width/numColumns; par.height = width/numColumns; button.setLayoutParams (par); – faizal