11

オプションで遊んでいますmeasureWithLargestChild="true"。ボタンの 1 つに大きすぎるテキストが含まれていると、レイアウト全体が壊れる理由がわかりません。基本サイズは1/3のままでいいと思いますが、1/6くらい小さくなっています。何故ですか?

ここにいくつかのスクリーンショットがあります:

ボタン配置バグ

ここに私のxmlがあります:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false"
    android:gravity="center"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:measureWithLargestChild="true" >
        <Button
            style="@style/my_style"
            android:layout_weight="1"
            android:text="Button123456" />
        <Button
            style="@style/my_style"
            android:layout_weight="1"
            android:text="A" />
        <Button
            style="@style/my_style"
            android:layout_weight="1"
            android:text="WW" />
    </LinearLayout>
</LinearLayout>
4

2 に答える 2

7

これは測定アルゴリズムのバグだと思います。メソッド内に以下のコメントがありますLinearLayout.measureHorizontal(int, int)

// Either expand children with weight to take up available space or
// shrink them if they extend beyond our current bounds

weight十分なスペースがない場合、アルゴリズムはアイテムを縮小します。measureWithLargestChildが に設定されているためtrue、すべてのアイテムが一番左のアイテムと同じ幅になります。現在、それらはすべて一緒になって親の幅に収まりません。したがって、それらは縮小されます。バグがなければ、後ですべてのアイテムが同じ幅になります。ただし、バグにより、アルゴリズムは、属性に従って計算された幅ではなく、元のmeasureWithLargestChild(wrap_content) 幅を縮小します。そのため、右側の 2 つの項目が小さくなりました。

于 2013-08-18T23:21:19.613 に答える