2

私はこの線形レイアウトの垂直方向を持っており、3つのビューを含みます。

最初のビューを上に、2番目を中央に、3番目を親線形レイアウトの下部に配置したいので、レイアウトの子にlayout_gravityを適用していますが、このプロパティはまったく機能していないようです。画面の上部に次々と表示されます

編集:これは、重みが2番目のビューに適用された場合に解決される可能性がありますが、layout_gravityで何が起こっているのですか、なぜそれが目的を果たさないのですか?

これがコードです

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"    
android:orientation="vertical" >   

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:text="Wifi not enabled"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="App require wifi to be enabled on your phone"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <Button
        android:id="@+id/btn_wifion"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"      
        android:text="Turn on my Wifi" />


  </LinearLayout>
4

3 に答える 3

1

RelativeLayoutを使用することをお勧めします。 また、layout_gravity が線形レイアウト内で機能しない理由については、線形レイアウトのクラスの概要を一度見てください。

希望の目標を達成するには、相対レイアウトを使用し、android:layout_alignParentコードの下のチェックを使用します#

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

       android:layout_centerHorizontal="true"
        android:text="Wifi not enabled"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="App require wifi to be enabled on your phone"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <Button
        android:id="@+id/btn_wifion"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"     
        android:text="Turn on my Wifi" />


  </RelativeLayout>
于 2012-11-21T04:54:06.943 に答える
1

ここの[UPDATE]の部分を読んでみてください。それは言う -

「layout_gravity」プロパティは、LinearLayout の方向と直交してのみ使用できます。

つまり、水平の LinearLayout がある場合、構造上、それぞれの内側の子ビューは、layout_gravity の上、下、および中央のみを持つことができます。この背後にある直感は、LinearLayout が各子ビューを互いに水平方向 (左から右) に隣接して配置するように既に指示されているため、各子の layout_gravity の垂直方向の指定のみを許可することです。垂直 LinearLayout の場合はその逆です。

同じことが垂直 nlayout_gravityにも当てはまり、RelativeLayout があるため、子ビューを親の上部/下部/... に揃えることができなくなりました。

多分これはあなたが探していたものです。:)

更新詳細については、このリンクを参照してください。:)

于 2012-11-21T04:28:24.900 に答える
0

これはあなたが必要とするものですか?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"    
android:orientation="vertical" >   

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_weight="0"
        android:text="Wifi not enabled"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
         android:layout_weight="1"
        android:text="App require wifi to be enabled on your phone"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <Button
        android:id="@+id/btn_wifion"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"      
         android:layout_weight="0"
        android:text="Turn on my Wifi" />


  </LinearLayout>
于 2012-11-21T04:11:27.500 に答える