Java &引用;“均匀分配重量”;编码

Java &引用;“均匀分配重量”;编码,java,android,button,Java,Android,Button,我有一个小问题…这是我的代码..有没有一种方法可以让我制作的按钮“平均分配重量”。。我尝试了按钮[I].setWidth()。。但是当我把手机转过来的时候,它看起来很难看。。那么,有没有办法自动分配按钮宽度 ViewGroup row1 = (ViewGroup)findViewById(R.id.TableRow02); ViewGroup row2 = (ViewGroup)findViewById(R.id.TableRow04); ViewGroup row3 =

我有一个小问题…这是我的代码..有没有一种方法可以让我制作的按钮“平均分配重量”。。我尝试了
按钮[I].setWidth()
。。但是当我把手机转过来的时候,它看起来很难看。。那么,有没有办法自动分配按钮宽度

    ViewGroup row1 = (ViewGroup)findViewById(R.id.TableRow02);
    ViewGroup row2 = (ViewGroup)findViewById(R.id.TableRow04);
    ViewGroup row3 = (ViewGroup)findViewById(R.id.TableRow06);
    ViewGroup row4 = (ViewGroup)findViewById(R.id.TableRow08);
    ViewGroup row5 = (ViewGroup)findViewById(R.id.TableRow10);

    Button button[] = new Button[36];
    for(int i=1;i<36;i++)
    {
        button[i] = new Button(this);

        if(i==32||i==33||i==34||i==35){button[i].setVisibility(-1);}

        button[i].setText("700€");
        button[i].setTextSize(10);
        button[i].setWidth(20);

     // Insert buttons in rows
        if(i<8){row1.addView(button[i]);}
        else if(i<15){row2.addView(button[i]);}
        else if(i<22){row3.addView(button[i]);}
        else if(i<29){row4.addView(button[i]);}
        else if(i<36){row5.addView(button[i]);}
    }
ViewGroup row1=(ViewGroup)findviewbyd(R.id.TableRow02);
ViewGroup row2=(ViewGroup)findViewById(R.id.TableRow04);
ViewGroup row3=(ViewGroup)findViewById(R.id.TableRow06);
ViewGroup row4=(ViewGroup)findViewById(R.id.TableRow08);
ViewGroup row5=(ViewGroup)findViewById(R.id.TableRow10);
按钮按钮[]=新按钮[36];

对于(int i=1;i策略,将按钮置于
线性布局中
,并为每个按钮设置
android:layout\u weight=“1”


从战略上来说,设计一个像样的UI,一个不包含36个按钮的UI。

从战术上来说,将按钮放在
线性布局中,并为每个按钮设置
android:layout\u weight=“1”


战略上,设计一个美观的UI,一个不包含一行36个按钮。

如普通SWALARE所说,代替设置宽度,你应该考虑设置按钮的权重参数,以实现灵活的布局。 如果希望以编程方式(即在代码中而不是在XML布局中)实现此目的,可以使用按钮的

setLayoutParams
方法。我还没有对其进行测试,但类似的方法应该可以:

// outside of loop
LayoutParams p = new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT, 
    LayoutParams.MATCH_PARENT, 
    1.0
);

....
// enter loop
....

button[i].setLayoutParams(p);
在本例中,
1.0
表示重量。其他两个参数表示
layout\u width
layout\u height
参数


<>但是,我很难想象一个有36个按钮的布局是非常友好的:--/P>< P>正如普通SWALARE所说的,而不是设置宽度,你应该考虑设置按钮的权重参数,以实现灵活的布局。 如果希望以编程方式实现此目的(即在代码中而不是在XML布局中),可以使用按钮的
setLayoutParams
方法。我还没有测试过,但类似的东西应该可以工作:

// outside of loop
LayoutParams p = new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT, 
    LayoutParams.MATCH_PARENT, 
    1.0
);

....
// enter loop
....

button[i].setLayoutParams(p);
在本例中,
1.0
表示重量。其他两个参数表示
layout\u width
layout\u height
参数


但说真的,我无法想象一个有36个按钮的布局对用户非常友好:-)

这段代码对您有用吗?您正在调用
setVisibility(-1)
,但是
视图中定义的常量都没有此值。最好使用
View.VISIBLE
View.INVISIBLE
View.GONE
来代替。是的。。这对我有用。。但是我会做一些更改。您应该尝试用视图替换大部分工作,将其转换为XML布局。使用XML创建静态布局要简单得多,因为您可以在不构建整个应用程序的情况下看到自己在做什么。。但是如果我愿意的话。。我需要定义每个按钮。。那么33行类似的文本?我还有35个文本视图。。。那么再次定义35行代码?:)这段代码对您有用吗?您正在调用
setVisibility(-1)
,但是
视图中定义的常量都没有此值。最好使用
View.VISIBLE
View.INVISIBLE
View.GONE
来代替。是的。。这对我有用。。但是我会做一些更改。您应该尝试用视图替换大部分工作,将其转换为XML布局。使用XML创建静态布局要简单得多,因为您可以在不构建整个应用程序的情况下看到自己在做什么。。但是如果我愿意的话。。我需要定义每个按钮。。那么33行类似的文本?我还有35个文本视图。。。那么35行的定义又来了?:)