Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 中心相对论或其内容_Android_Android Layout_Android Relativelayout - Fatal编程技术网

Android 中心相对论或其内容

Android 中心相对论或其内容,android,android-layout,android-relativelayout,Android,Android Layout,Android Relativelayout,这些天我在学习Android的时候,我正在制作一个小应用程序,我遇到了一个小问题,我制作了一个RelativeLayout(在java文件中,而不是xml文件中),然后在其中引入了一个相对于另一个的按钮 最终布局如下所示: 我要做的是创建最上面一行的中间按钮,然后创建与他相关的所有其他按钮。我想做的是将RelativeLayout放在视图的中心,这样我就可以使电路板居中,并且可以在屏幕顶部放置一些文本或任何其他内容。我曾考虑过在RelativeLayout之前创建一个线性布局,然后设置一些类似

这些天我在学习Android的时候,我正在制作一个小应用程序,我遇到了一个小问题,我制作了一个RelativeLayout(在java文件中,而不是xml文件中),然后在其中引入了一个相对于另一个的按钮

最终布局如下所示:

我要做的是创建最上面一行的中间按钮,然后创建与他相关的所有其他按钮。我想做的是将RelativeLayout放在视图的中心,这样我就可以使电路板居中,并且可以在屏幕顶部放置一些文本或任何其他内容。我曾考虑过在RelativeLayout之前创建一个线性布局,然后设置一些类似于边距底部的内容,或者将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();  
}

提前感谢各位

尝试对代码进行以下更改

将Layoutparams从包装内容更改为匹配父项

并将相对布局的重心设置为中心

private RelativeLayout makeBoard() {
        int papi = 4;
        int grande = 3;
        int peque = 1;
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        RelativeLayout parent = new RelativeLayout(this);

        parent.setLayoutParams(params);
        parent.setGravity(Gravity.CENTER);


        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;
    }

如何将此
添加到屏幕/主布局<代码>设置内容视图
还是什么?发布该部分。是的,我只是在onCreate中设置ContentView(board),添加了onCreate代码。它工作了,我尝试了水平居中,但事情搞砸了。整个事情都在进行中,看起来是这样的谢谢!
private RelativeLayout makeBoard() {
        int papi = 4;
        int grande = 3;
        int peque = 1;
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        RelativeLayout parent = new RelativeLayout(this);

        parent.setLayoutParams(params);
        parent.setGravity(Gravity.CENTER);


        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;
    }