1

linearLayout を使用して画面を分割しているときに問題が発生しました。私の目標は、それを 9 つの魚座に分割することです。LinearLayout で遊び始めたとき、次の結果になりました。

http://imageshack.us/photo/my-images/4/firstna.png/

次の xml コードを使用します。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
    <LinearLayout
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:baselineAligned="false">
    <FrameLayout
      android:gravity="center_horizontal"
      android:background="#aa0000"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1">
    </FrameLayout>
    <FrameLayout
      android:gravity="center_horizontal"
      android:background="#00aa00"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="4"/>
    <FrameLayout
      android:gravity="center_horizontal"
      android:background="#aaaa00"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"/>
    </LinearLayout>
    </LinearLayout>

後で左の FrameLayout にコンテンツを追加しようとすると、この FrameLayout の比率が変更されました (これが問題です..):

http://imageshack.us/photo/my-images/692/secondp.png/

次のコードを使用します。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
    <LinearLayout
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:baselineAligned="false">
  <FrameLayout
      android:gravity="center_horizontal"
      android:background="#aa0000"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1">
      <LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
    android:text="row one"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
<TextView
    android:text="row two"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
<TextView
    android:text="row three"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
<TextView
    android:text="row four"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
    </LinearLayout>
    </FrameLayout>
    <FrameLayout
      android:gravity="center_horizontal"
      android:background="#00aa00"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="4"/>
    <FrameLayout
      android:gravity="center_horizontal"
      android:background="#aaaa00"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"/>
    </LinearLayout>
    </LinearLayout>

layout_weight 属性だけでレイアウトを制御できるようにしたいと考えています。コンテンツを FrameLayout に追加すると比率が変わる場合、比率が保存される別のコンテナーを見つける手助けが必要になります。ありがとうございます。

4

1 に答える 1

0

うわー、ネストされたレイアウトをたくさん使用しています! 左側のレイアウトは、その中に別の線形レイアウトがあり、次にすべてのテキストビューがあるフレーム レイアウトである必要がありますか? または、FrameLayout の親を置き換えて、背景色を垂直方向の LinearLayout に移動することはできますか?

実際には、なぜ2番目の線形レイアウトも必要なのですか? 最初のリニア レイアウトの向きが水平になるように指定し (とにかく高さに fill_parent があります)、次にネストされた 2 番目のリニア レイアウトをドロップします。

また、FrameLayout のレイアウト幅を 0dp に変更して、重みに基づいて動的にサイズ変更することを検討する必要があります。

于 2012-04-09T22:42:27.987 に答える