0

今日、私はLinearLayoutで少し遊んでいて、その結果に驚いています。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     android:orientation="vertical" >



<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Big Text"
    android:gravity="center_vertical|center_horizontal"
    android:textAppearance="?android:attr/textAppearanceLarge" />


<TextView
   android:id="@+id/textView2"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:text="Medium Text"
   android:textAppearance="?android:attr/textAppearanceMedium" />   


<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:text="Button"
   />

</LinearLayout>

これは、テキストビューヘッダー、次にすべての親(ただし、下のボタンが占めるスペース)をカバーするテキストビュー、およびレイアウト_gravity="bottom"でボタン側に配置されるボタンを含む単純なレイアウトです。 。

これにより、ヘッダーが正しく表示され、中央のテキストビューが残りのすべての空き領域をカバーし、ボタンが表示されないレイアウトが作成されます。どうしてこれなの?中央のテキストビューは、下のボタンのサイズを考慮してサイズを計算するだけではいけませんか?

4

4 に答える 4

3

センターでlayout_weight="1"を使用しますTextView

于 2012-05-30T09:11:11.667 に答える
1

常に親指のルールを覚えておいてください

コントロールを見つけたらすぐに垂直方向の線形レイアウトを使用している場合

android:layout_height="match_parent"

レイアウトは、その下にあるすべてのコントロールを無視します。

この助けを願っています

Vipul

于 2012-05-30T09:20:34.353 に答える
1

これの代わりに

 android:layout_width="match_parent"
 android:layout_height="match_parent"

このように「wrap_content」を使用します

  android:layout_width="wrap_content"/"fill_parent"
  android:layout_height="wrap_content"/"fill_parent"
于 2012-05-30T09:24:03.070 に答える
1

中央のテキストビューは、下のボタンのサイズを考慮してサイズを計算するだけではいけませんか?

いいえ、2番目TextViewに親の高さに一致するように指示するFILL_PARENTため、残りのすべてのスペースがいっぱいになり、最後のスペースには何も残されませんTextView

(...)そしてlayout_gravity="bottom"でボタン側に配置されたボタン。

残念ながら、それはどのようにLinearLayout機能するかではありません。向きを垂直に設定すると、基本的にleftright重力のみが効果を発揮します。逆に、(デフォルトの)水平方向でのみ機能topbottomます。方向によって、View子が動的に順番に配置される方向が決まります。つまり、その方向の「位置」を手動で変更することはできません。

ここで、目的の効果を得るには、2番目TextViewに高さ0dpと重みを指定します。これにより、3番目を下から押し出すことなく1、残りのすべてのスペースを動的に埋めることができます。または、を使用して位置直接設定し、中央に最初の下、最後の上に座るように指示することもできます。TextViewRelativeLayoutTextView

于 2012-05-30T09:25:34.197 に答える