调整LinearLayout Children的宽度

时间:2012-08-30 08:48:29

标签: android

我有一个动态添加行的布局。每行包含TextView和EditText。现在,EditText的文本是在运行时设置的,所以我希望它们全部整齐地排列为一个inout形式,其中文本字段位于左侧,而edittext位于右侧。

这是我的代码

for (int i = 0; i < itemsContainer.getChildCount(); i++) 
    {
        View v=itemsContainer.getChildAt(i);
        if(v instanceof ClickableButtonView)
        {
            TextView textView=((ClickableButtonView)v).getItem();
            if(textView.getWidth() > width)
            {
                width=textView.getWidth();
            }
        }

    }

    for (int i = 0; i < itemsContainer.getChildCount(); i++) 
    {
        View v=itemsContainer.getChildAt(i);
        if(v instanceof ClickableButtonView)
        {
            TextView textView=((ClickableButtonView)v).getItem();
            textView.setLayoutParams(new LayoutParams(width, LayoutParams.WRAP_CONTENT));
        }

    }

现在发生的是我的布局,文本视图崩溃,只有右侧的元素占用了整个空间。我想遍历LineraLyout,找到占用最多空间的edittext并设置所有edittext以占用完全相同的房间。可以这样做吗?

1 个答案:

答案 0 :(得分:1)

在循环中调用此方法,以使用所需的任何权重设置textview的样式。赋予所有人重量1将使其平等。

private void setStyle(TextView textView, float weight) {
    textView.setSingleLine(false);
    textView.setWidth(0);
    textView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT, weight));
    textView.setPadding(8, 0, 8, 0);
    textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
}