2013-01-04 9 views
6

なぜコンテンツをビューの中央に配置しないのですか?垂直方向の重力が応答しない

<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="horizontal" 
    android:layout_gravity="center_vertical" 
    tools:context=".MainActivity"> 

    <EditText 
     android:id="@+id/messageTextField" 
     android:layout_weight="1" 
     android:inputType="number" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:hint="@string/messageTextFieldPlaceholder" 
    /> 
    <Button 
     android:id="@+id/sendButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/sendButtonTitle" 
     android:onClick="sendMessage" 
    /> 

</LinearLayout> 

Iは、垂直配向に関するいくつかのSOスレッドを見て、私はまたthisを見ているが、私はそう重力が左右にビューを調整する設定、水平方向のLinearLayoutを有します。

LinearLayoutに親の寸法があるので、それは画面全体を満たしませんか?

android:layout_gravity="center_vertical"は、そのサブビューをその寸法の中央(垂直)に揃えてはいけませんか?

これは、私がやったコーディングで私にとって理にかなっているのですが、なぜアンドロイドが意味をなさないのですか?

他にもLinearLayoutが必要ですか?内部には他のすべてを保持する垂直線があり、それにはandroid:layout_gravity="center_vertical"がありますか?

答えて

9

layout_gravity
子が親を する供給できることを標準重力定数。

gravity
は、オブジェクト自体の中、両方 x軸とy軸に、オブジェクトのコンテンツを配置する方法を指定します。

コンテンツを垂直にセンタリングする場合は、gravityでなくlayout_gravityが必要です。

+0

わかりました。それで、layout_gravityは内容との通信時にレイアウトの重力になり、レイアウトの重力はコンテンツの調整時のものになります。 – RileyE

+0

はい。 'layout_gravity' - >子から親まで、' gravity' - >親から子までです。 – Ahmad

+1

素晴らしいありがとうございました! – RileyE

1

代わりandroid:layout_gravity="center_vertical"を使用しての、android:gravity="center_vertical"を使用してください、それが動作します... :)

+0

ありがとうございました。私は、余分な説明のために、アフマドと一緒に行かなければならなかった。 – RileyE

関連する問題