Я делаю небольшое приложение, поскольку изучаю Android в эти дни, и у меня возникла небольшая проблема, я сделал RelativeLayout (в файле java, а не в xml-файле), а затем представил кнопки в нем один относительно другого.Центр RelativeLayout или его содержимое
Окончательный вариант его, как это:
Что я делаю, я создаю верхнюю пуговицу строки центра, а затем все остальные кнопки по отношению к нему. То, что я хотел бы сделать, - это центрировать RelativeLayout в представлении, чтобы я был сосредоточен на доске, и я могу поместить какой-то текст или что-то еще в верхней части экрана. Я подумал о создании LinearLayout перед RelativeLayout, а затем установил что-то наподобие «margin bottom» или представил RelativeLAyout в другой макет, чтобы сосредоточиться на нем, но кажется, что он не работает. Что вы предлагаете мне сделать для достижения этой цели, не меняя Я делаю совет? Вот код для изготовления платы:
private RelativeLayout makeBoard(){
int papi = 4;
int grande =3;
int peque = 1;
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(wrap_content,wrap_content);
RelativeLayout parent = new RelativeLayout(this);
parent.setLayoutParams(params);
papi = makeRow(parent,papi,peque);
papi = makeRow(parent,papi,peque);
papi = makeRow(parent,papi,grande);
papi = makeRow(parent,papi,grande);
papi = makeRow(parent,papi,grande);
papi = makeRow(parent,papi,peque);
papi = makeRow(parent,papi,peque);
return parent;
}
private int makeRow (RelativeLayout parent, int papasote,int colDer)
{
int index = papasote+10;
if (papasote==4)
{
createButtonSinMas (parent, index);
}
else
{
createButtonJustoAbajo(parent, index, papasote);
}
for (int i=0;i<colDer;i++)
{
createButtonAlaDeresha(parent, index+i+1, index+i);
createButtonAlaIskierda(parent, index-i-1, index-i);
}
return index;
}
private int createButtonSinMas (RelativeLayout parent, int id)
{
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(SIZE, SIZE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);
CCCButton button = new CCCButton(this);
button.setLayoutParams(params);
return basura(parent,id,params, button);
}
private int createButtonJustoAbajo (RelativeLayout parent, int id, int papasote)
{
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(SIZE, SIZE);
params.addRule(RelativeLayout.BELOW, papasote);
params.addRule(RelativeLayout.ALIGN_RIGHT, papasote);
CCCButton button = new CCCButton(this);
return basura(parent,id,params, button);
}
private int createButtonAlaDeresha (RelativeLayout parent, int id, int papasote)
{
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(SIZE, SIZE);
params.addRule(RelativeLayout.RIGHT_OF, papasote);
params.addRule(RelativeLayout.ALIGN_BASELINE,papasote);
CCCButton button = new CCCButton(this);
return basura(parent,id,params, button);
}
private int createButtonAlaIskierda (RelativeLayout parent, int id, int papasote)
{
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(SIZE, SIZE);
params.addRule(RelativeLayout.LEFT_OF, papasote);
params.addRule(RelativeLayout.ALIGN_BASELINE,papasote);
CCCButton button = new CCCButton(this);
return basura(parent,id,params, button);
}
private int basura(RelativeLayout parent,int id,RelativeLayout.LayoutParams params, CCCButton button)
{
button.setId(id);
button.setLayoutParams(params);
button.setOnClickListener(this);
actualizarBoton(button);
parent.addView(button);
return button.getId();
}
Тогда я просто делаю в своей основной плате = makeBoard(); который является переменной RelativeLayout.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
game = new Game();
board = makeBoard();
setContentView(board);
}
Заранее спасибо ребята
Как вы можете добавить эту «панель» к экрану/главному макету? 'setContentView' или что-то еще? Опубликовать эту часть .. –
Да, я просто делаю setContentView (board) в onCreate, добавлен код onCreate – Khiven