android:gravityおよび android:layout_gravityプロパティに次の値を設定できることを知っています。
centercenter_verticalcenter_horizontal、など
しかし、私はこれらの両方について混乱しています。
用法の違いは何であるandroid:gravityとはandroid:layout_gravity?
ImageViewはとは動作が異なるようですTextView。
android:gravityおよび android:layout_gravityプロパティに次の値を設定できることを知っています。
centercenter_verticalcenter_horizontal、などしかし、私はこれらの両方について混乱しています。
用法の違いは何であるandroid:gravityとはandroid:layout_gravity?
ImageViewはとは動作が異なるようですTextView。
回答:
彼らの名前はあなたを助けるはずです:
android:gravityView使用されているコンテンツ(つまりそのサブビュー)の重力を設定します。 android:layout_gravityViewまたはの重力をLayout親に対して設定します。 そして例はこちらです。
layout_、外部の要素に影響を与える何かを定義します。
android:gravityを左に設定し、その子android:layout_gravityを右に設定するとどうなりますか?子供たちはどちら側に整列しますか?
gravityコンテンツをビュー内に配置します。layout_gravityビューの位置をそれ自体の外に配置します。時にはそれも写真を見るのに役立ちます。緑と青はTextViewsで、他の2つの背景色はLinearLayoutsです。
layout_gravity内のビューでは動作しませんRelativeLayout。LinearLayoutまたはのビューに使用しますFrameLayout。詳細については、補足の回答を参照してください。gravityは効果がありません。したがって、wrap_contentおよびgravity一緒に意味がありません。layout_gravityは効果がありません。したがって、match_parentおよびlayout_gravity一緒に意味がありません。layout_gravity=center同じように見えるlayout_gravity=center_horizontal彼らは垂直線形レイアウトであるため、ここで。この場合、垂直方向に中央揃えすることはできないため、layout_gravity=center水平方向にのみ中央揃えにします。gravityとlayout_gravityビューのみを扱いました。gravity親レイアウト自体のを設定するとどうなるかを確認するには、上記で参照した補足の回答を確認してください。(概要:gravitya RelativeLayoutではうまく機能しませんが、で役立ちLinearLayoutます。)したがって、layout _gravityはビューをそのレイアウトに配置することを覚えておいてください。重力はビュー内のコンテンツを配置します。
参考のために上記の画像のxmlを次に示します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#e3e2ad"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="left"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center_horizontal"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#bcf5b1"
android:gravity="right"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:background="#aacaff"
android:gravity="center"
android:text="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#d6c6cd"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="24sp"
android:text="layout_gravity=" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="left"
android:background="#bcf5b1"
android:text="left" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:background="#aacaff"
android:text="center_horizontal" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="right"
android:background="#bcf5b1"
android:text="right" />
<TextView
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="#aacaff"
android:text="center" />
</LinearLayout>
</LinearLayout>
android:layout_gravityある外のビューの重力。ビューが親の境界に触れる方向を指定します。
android:gravityあるインサイドそのビューの重力。内容を揃える方向を指定します。
Android | CSS
————————————————————————+————————————
android:layout_gravity | float
android:gravity | text-align
テイクlayout-gravity「レイ・アウトサイド・重力」として。
短い答え:android:gravityまたはsetGravity()を使用して、コンテナのすべての子ビューの重力を制御します。android:layout_gravityまたはsetLayoutParams()を使用して、コンテナ内の個々のビューの重力を制御します。
長い話:LinearLayoutまたはなどの線形レイアウトコンテナーで重力を制御するRadioGroupには、2つの方法があります。
1)LinearLayout(本で行ったように)コンテナのすべての子ビューの重要性を制御するには、レイアウトXMLファイルまたは(コード内の)メソッドでandroid:gravity(ではなくandroid:layout_gravity)を使用setGravity()します。
2)コンテナ内の子ビューの重力を制御するには、android:layout_gravityXML属性を使用します。コードでLinearLayout.LayoutParamsは、ビューのを取得してその重力を設定する必要があります。以下は、水平方向のコンテナでボタンを下に設定するコード例です。
import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...
Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams();
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);
水平LinearLayoutコンテナの場合、その子ビューの水平重力は次々と左揃えになり、変更できません。に設定android:layout_gravityしcenter_horizontalても効果はありません。デフォルトの垂直重力は中央(またはcenter_vertical)で、上または下に変更できます。実際のデフォルトlayout_gravity値は-1Android ですが、Androidでは垂直方向の中央に配置されています。
水平線形コンテナ内の子ビューの水平位置を変更するには、子ビューのlayout_weight、マージン、およびパディングを使用できます。
同様に、垂直ビューグループコンテナーの場合、その子ビューの垂直重力は上下に上揃えされ、変更できません。デフォルトの水平重力は中央(またはcenter_horizontal)で、左または右に変更できます。
実際、ボタンなどの子ビューにもandroid:gravityXML属性とsetGravity()その子ビューを制御するメソッド(その中のテキスト)があります。Button.setGravity(int)これにリンクされているdeveloper.android.comエントリー。

重力について明確にするために画像を見てください
とには多くの違いがgravityありlayout-gravityます。これらの2つの概念についての私の経験を説明します(私の観察といくつかのWebサイトのために得たすべての情報)。
FrameLayout.....での重力とレイアウト重力の使用
注意:-
一部のユーザーが答えを持っているので重力はビューコンテンツ内で使用され、それはすべてに同じですViewGroup Layout。
Layout-gravity 一部のユーザーが答えを持っているので、親ビューで使用されます。
Gravity and Layout-gravityある仕事はより便利でFrameLayoutチャイルズ。We can't use Gravity and Layout-gravityFrameLayoutのタグ....
FrameLayout使用中の任意の場所で子ビューを設定できlayout-gravityます。
私たちは、内部でframeLayout重力のすべての単一の値を使用することができます(例: - 、center_vertical、center_horizontal、center、topなど)が、それは他のViewGroupレイアウトでは不可能です。
FrameLayout完全に取り組んでいLayout-gravityます。例: -あなたが作業している場合FrameLayout、あなたは全体のレイアウトを変更する必要はありません新しいビューを追加するため。あなただけのビューを追加で最後としてFrameLayout、彼を与えるLayout-gravity値で。(これはでframeLayoutとレイアウト重力のadavantagesです)。
例を見てください......
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center"
android:text="Center Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#1b64b9"
android:gravity="bottom"
android:layout_gravity="bottom|center"
android:text="Bottom Layout Gravity" />
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#d75d1c"
android:gravity="top"
android:layout_gravity="top|center"
android:text="Top Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="100dp"
android:textColor="#d71f1c"
android:gravity="top|right"
android:layout_gravity="top|right"
android:text="Top Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="bottom"
android:gravity="bottom"
android:text="Top Left Layout Gravity"/>
</FrameLayout>
出力:-
LinearLayoutでの重力とレイアウト重力の使用.....
Gravity上記と同じように機能しますが、ここでは、Gravityを内で使用できることLinearLayout Viewと、内では使用できRelativeLayout Viewないことの違いがありFrameLayout Viewます。
垂直方向のLinearLayout ....
注:-ここlayout_gravityでは、(left| right| center(別名center_horizontal))の3つの値のみを設定できます。
例を見てみましょう:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Center Layout Gravity \nor \nCenter_Horizontal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="right"
android:text="Right Layout Gravity"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="80dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:gravity="bottom"
android:text="Left Layout Gravity"/>
</LinearLayout>
出力:-
水平方向に配置されたLinearLayout ....
注:-ここでは、3つの値を設定することもできますlayout_gravity(top| bottom| center(別名center_vertical))。
例を見てみましょう:-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:textColor="#264bd1"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Bottom \nLayout \nGravity"/>
<TextView
android:layout_width="120dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginTop="20dp"
android:textColor="#d75d1c"
android:layout_gravity="center"
android:text="Center \nLayout \nGravity"/>
<TextView
android:layout_width="150dp"
android:layout_height="100dp"
android:textSize="25dp"
android:background="#000"
android:layout_marginBottom="100dp"
android:textColor="#d71cb2"
android:layout_gravity="left"
android:layout_marginTop="20dp"
android:text="Left \nLayout \nGravity"/>
</LinearLayout>
出力:-
注: -私たちは、使用することはできませんlayout_gravityでRelativeLayout Viewsはなく、我々が使用することができますgravityセットにRelativeLayout....同じ位置にチャイルズ
textColorすべてを白に設定viewすると、それは非常に素晴らしいことです。:D
Sandipのブログで見逃しそうなことがあったので、問題を修正しました。彼はで動作しlayout_gravityないと述べましたLinearLayout。
を使用していLinearLayoutて、重力の設定が気が狂っている場合(私のように)、他の何かに切り替えます。
私は実際にRelativeLayout当時使用されlayout_alignParentLeftてlayout_alignParentRightいた2 TextViewつのs に切り替えて、1行で左端と右端に移動しました。
android:gravityオブジェクト自体の中にオブジェクトのコンテンツを配置する方法を指定するために使用されます。言い換えると、android:gravityはビューのコンテンツの重力を指定するために使用されます。
android:layout_gravity 子が親に提供できる属性であり、親内のビューの重力を指定します。
あなたが訪問できる詳細については
http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html
重力:コンテナー内のコンテンツを移動できます。(サブビューの配置方法)。
重要:(使用可能なスペース内でX軸またはY軸に沿って移動してください)。
例: LinearLayout(高さ:match_parent、幅:match_parent)をルートレベル要素として使用する場合、完全なフレームスペースが利用可能になるとします。子ビューは、LinearLayout内の2つのTextView(高さ:wrap_content、幅:wrap_content)を、親の重力の対応する値を使用してx / y軸に沿って移動できます。
Layout_Gravity: x軸に沿った場合のみ親の重力動作をオーバーライドできます。
重要:(使用可能なスペース内でX軸に沿ってMOVE [オーバーライド])。
例:前の例を覚えていれば、重力によってx / y軸に沿って移動できることがわかります。TextViewをLinearLayout内に配置します。LinearLayoutが重力を指定しているとしましょう:中心; つまり、すべてのTextViewを垂直方向と水平方向の両方の中央に配置する必要があります。これで、TextViewの1つを左/右に移動したい場合は、TextViewでlayout_gravityを使用して、指定された重力動作をオーバーライドできます。
おまけ:さらに掘り下げると、TextView内のテキストがサブビューとして機能することがわかります。したがって、TextViewに重力を適用すると、TextView内のテキストが動き回ります。(ここでもコンセプト全体が適用されます)
重力:textview、edittextなどの単純なビューに使用されます。
layout_gravity:線形レイアウトやFrameLayoutなどの相対的な親ビューのコンテキストで現在のビューの重力のみに使用され、ビューを中央またはその他の親の重力で表示します。