/ / Android - Как да създадете динамично оформление NxN, като Tic Tac Toe? андроид, оформление

Not30 τη not3030 τη not τη not not τη τη not τη not30 not not τη not30 андроид, оформление

Как мога да направя оформление динамично като tic tac toe?

Тя трябва да бъде динамична, защото искам да правя 3x3 квадратчета или 4x4 квадратчета или nxn квадратчета.

Мисля, че имам нужда от 2 for-loops да го направя, но какво точно и как да го направя?

Отговори:

0 за отговор № 1

GridView изглежда е най-добрият вариант. Тя ще работи добре, дори и броят на елементите да се променя по време на изпълнение.

Ако обаче искате да избегнете GridView, използвайте RelativeLayout като родител и позиционирайте изгледите на подрежданията на деца като решетка, като използвате ТРЪГНА, НАПУСНА и ПО-ДОЛУ подобни свойства.

RelativeLayout би било по-добре от йерархията на LinearLayout, тъй като гнездяването на възгледите може да е лошо. (Ref)


0 за отговор № 2

Можете да използвате GridView, който е лесен за използване, но е достъпен само от api 14, или можете да поставите n LinearLayouts във всеки n LinearLayouts, който можете да направите във всяка api.

Ето една примерка, която направих за оформлението на nXn трябва да работи (просто заменете big_layout с изгледа, към който искате да бъде прикачен).

public void createNxNLayouts(int n,int width,int height){
LinearLayout[] main_layouts = new LinearLayout[n];
for(int i=0;i<main_layouts.length;i++){
main_layouts[i] = new LinearLayout(this);
main_layouts[i].setOrientation(LinearLayout.HORIZONTAL);
main_layouts[i].setLayoutParams(new LinearLayout.LayoutParams(width,height/n));
bigLayout.addView(main_layouts[i]);
}
LinearLayout[][] secondary_layouts = new LinearLayout[n][n];

for(int i=0;i<secondary_layouts.length;i++){
for(int j=0;j<secondary_layouts[i].length;j++){
secondary_layouts[i][j] = new LinearLayout(this);
secondary_layouts[i][j].setOrientation(LinearLayout.HORIZONTAL);
secondary_layouts[i][j].setLayoutParams(new LinearLayout.LayoutParams(width/n,height/n));
main_layouts[i].addView(secondary_layouts[i][j]);
}
}
}