0

行を動的に追加するレイアウトがあります。各行は、TextViewとEditTextで構成されています。これで、EditTextのテキストが実行時に設定されるので、テキストフィールドが左側にあり、編集テキストが右側にあるinoutフォームのように、すべてをきちんと揃えたいと思います。

これは私のコードです

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を繰り返し処理し、最も多くのスペースを占めるエディットテキストを見つけて、すべてのエディットテキストをまったく同じ部屋を占めるように設定します。これはできますか?

4

1 に答える 1

1

このメソッドをループで呼び出して、必要な重みを使用してテキストビューのスタイルを設定します。すべてに重み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);
}
于 2012-08-30T10:23:06.133 に答える