【发布时间】:2013-11-26 09:21:31
【问题描述】:
我最近在学习 Android 时正在制作一个小应用程序,但遇到了一个小问题,我制作了一个 RelativeLayout(在 java 文件中,而不是 xml 文件中),然后在其中引入了一个相对于其他。
最终的布局是这样的:
我所做的是创建中间的顶行按钮,然后创建与他相关的所有其他按钮。我想做的是将RelativeLayout 在视图中居中,这样我的板就居中了,我可以在屏幕顶部放置一些文本或其他任何内容。我曾考虑在 RelativeLayout 之前创建一个 LinearLayout,然后设置诸如底部边距之类的东西或将 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(); board 是一个 RelativeLayout 变量。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
game = new Game();
board = makeBoard();
setContentView(board);
}
提前谢谢大家
【问题讨论】:
-
如何将此
board添加到屏幕/主布局中?setContentView还是什么?发布那部分.. -
是的,我只是在 onCreate 中做了 setContentView(board),添加了 onCreate 代码
标签: android android-layout android-relativelayout