0

Android の LinearLayout と重みに問題があります。水平方向の LinearLayout に、2 つの垂直方向の LinearLayouts の間の区切りとなる 9 パッチの背景を持つ単一のビューで区切られた 2 つの垂直方向の LinearLayouts を保持する必要があります。

このように: (外側のボックスは外側の LinearLayout で、中央の二重線は私の 9 パッチ区切りです。)

----------------------------
|    one    ||    three    |
|    two    ||    four     |
----------------------------

発生し続けるのは、最初の内部 LinearLayout がそのコンテンツを表示するための最小幅で表示され (幅wrap_contentが 2 番目の内側の LinearLayout はまったく表示されません。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="2" >    
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:layout_weight="1" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="one" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="two" />
    </LinearLayout>

    <View
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/divider_vertical"
        android:layout_weight="0" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:layout_weight="1" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="three" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="four" />
    </LinearLayout>

</LinearLayout>

ここで何が間違っていますか?中央のビューがすべてのスペースを占有し、2番目の内側のLinearLayoutに何も残さない理由を、私の人生では理解できません。

9 パッチ ビューに特定の px または dp 幅を指定すると動作するようになりますが、この幅を指定しなくても動作するようにしたいのです。そうすれば、9 パッチのドローアブルを変更することにした場合でも、幅を手動で更新する必要はありません。

4

5 に答える 5

0

あなたの 9 パッチの大きさはどれくらいですか? 9 パッチの伸縮可能な領域は縮小できません。アセットのファイルの幅によって、LinearLayout で取り込もうとする最小スペースが決まります。

于 2013-09-11T17:52:11.770 に答える
0

以下のようにレイアウトの重みを設定します

親の weightSum はデフォルトで子の layout_weight 合計に設定されることに注意してください

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >    
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:layout_weight="3" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="one" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="two" />
    </LinearLayout>

    <View
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/divider_vertical"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:layout_weight="3" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="three" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="four" />
    </LinearLayout>

</LinearLayout>

確かに、重みの値を試すことができます

于 2013-09-11T17:52:38.717 に答える
0
  • weightSum="2"親 LinearLayout から を削除します。
  • android:layout_weight="0"9 パッチビューから削除
于 2013-09-11T06:11:33.580 に答える