我有一个动态添加行的布局。每行包含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以占用完全相同的房间。可以这样做吗?
答案 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);
}