android:gravity
および android:layout_gravity
プロパティに次の値を設定できることを知っています。
center
center_vertical
center_horizontal
、など
しかし、私はこれらの両方について混乱しています。
用法の違いは何であるandroid:gravity
とはandroid:layout_gravity
?
ImageView
はとは動作が異なるようですTextView
。
android:gravity
および android:layout_gravity
プロパティに次の値を設定できることを知っています。
center
center_vertical
center_horizontal
、などしかし、私はこれらの両方について混乱しています。
用法の違いは何であるandroid:gravity
とはandroid:layout_gravity
?
ImageView
はとは動作が異なるようですTextView
。
回答:
彼らの名前はあなたを助けるはずです:
android:gravity
View
使用されているコンテンツ(つまりそのサブビュー)の重力を設定します。 android:layout_gravity
View
またはの重力を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
親レイアウト自体のを設定するとどうなるかを確認するには、上記で参照した補足の回答を確認してください。(概要:gravity
a 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_gravity
XML属性を使用します。コードで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
値は-1
Android ですが、Androidでは垂直方向の中央に配置されています。
水平線形コンテナ内の子ビューの水平位置を変更するには、子ビューのlayout_weight
、マージン、およびパディングを使用できます。
同様に、垂直ビューグループコンテナーの場合、その子ビューの垂直重力は上下に上揃えされ、変更できません。デフォルトの水平重力は中央(またはcenter_horizontal
)で、左または右に変更できます。
実際、ボタンなどの子ビューにもandroid:gravity
XML属性と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-gravity
FrameLayoutのタグ....
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などの相対的な親ビューのコンテキストで現在のビューの重力のみに使用され、ビューを中央またはその他の親の重力で表示します。