다음 값을 android:gravity
and android:layout_gravity
속성으로 설정할 수 있다는 것을 알고 있습니다.
center
center_vertical
center_horizontal
등
그러나 나는이 두 가지에 대해 혼란 스럽다.
의 사용의 차이 무엇 android:gravity
과 android:layout_gravity
?
ImageView
의 것과 다른 것으로 보입니다 TextView
.
다음 값을 android:gravity
and 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
다른 두 가지 배경색입니다 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
잘 작동하지 않지만에 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
두 가지 방법이 있습니다 :
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 (또는 center_vertical)이며 상단 또는 하단으로 변경할 수 있습니다. 실제로 기본값 layout_gravity
은 -1
Android이지만 세로 중앙에 놓았습니다.
가로 선형 컨테이너에서 자식보기의 가로 위치를 변경하려면 자식보기의 layout_weight
, 여백 및 패딩을 사용할 수 있습니다.
마찬가지로 세로 뷰 그룹 컨테이너의 경우 하위 뷰의 세로 중력이 서로 아래로 정렬되며 변경할 수 없습니다. 기본 수평 중력은 중심 (또는 center_horizontal
)이며 왼쪽 또는 오른쪽으로 변경할 수 있습니다.
실제로 버튼과 같은 자식 뷰에는 android:gravity
XML 속성과 setGravity()
자식 뷰를 제어 하는 방법 (텍스트)도 있습니다. 은 Button.setGravity(int)
이 연결되어 developer.android.com 항목 .
중력에 대해 명확하게 이미지를보십시오
gravity
와에 많은 차이가 있습니다 layout-gravity
. 나는이 두 가지 개념에 대한 나의 경험을 설명하려고합니다 ( 내 관찰 및 일부 웹 사이트로 인해 얻은 모든 정보 ).
FrameLayout
..... 에서 중력 및 레이아웃 중력 사용
노트:-
중력 은 일부 사용자가 답변을 가지고 있으며 모두에게 동일하기 때문에 View Content 내부에서 사용됩니다 ViewGroup Layout
.
Layout-gravity
일부 사용자가 답변을 가지고 있으므로 상위보기와 함께 사용됩니다.
Gravity and Layout-gravity
이다 일 더 유용 에 FrameLayout
차일. We can't use Gravity and Layout-gravity
FrameLayout의 태그에서 ....
FrameLayout
사용 중 어디서나 Child View를 설정할 수 있습니다 layout-gravity
.
우리는 FrameLayout이 내부 중력의 모든 단일 값 사용할 수 있습니다 (예 : - center_vertical
, center_horizontal
, center
, top
, 등)하지만, 다른 뷰 그룹 레이아웃과 함께 할 수 없습니다.
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
위 그러나 여기 differnce 같은 작업하는 우리가 내부의 중력을 사용할 수 있다는 것입니다 LinearLayout View
하고 RelativeLayout View
있는 것은 가능하지 않다 FrameLayout View
.
방향이 수직 인 LinearLayout ....
참고 :-여기서는 3 개의 값만 layout_gravity
( left
| right
| center
(라고도 함 center_horizontal
)) 설정할 수 있습니다 .
예를 보았습니다 :-
<?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
.
a를 사용 LinearLayout
하고 중력 설정으로 인해 나처럼 견과를 느끼는 경우 다른 것으로 전환하십시오.
나는 사실로 전환 RelativeLayout
한 후 사용 layout_alignParentLeft
및 layout_alignParentRight
2 개 포함에 TextView
맨 왼쪽과 맨 오른쪽으로 이동 한 줄에를 얻을 수의.
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 내부의 TextView 2 개 (높이 : wrap_content, 너비 : wrap_content)는 부모의 중력에 해당하는 값을 사용하여 x / y 축을 따라 이동할 수 있습니다.
Layout_Gravity : x 축을 따라서 만 부모 중력 동작을 무시할 수 있습니다.
중요 : (사용 가능한 공간 내에서 X 축을 따라 이동 [재정의]).
예 : 앞의 예를 명심하면 중력으로 인해 x / y 축을 따라 움직일 수 있습니다. LinearLayout 내부의 TextViews LinearLayout이 중력을 지정한다고 가정 해 봅시다 : center; 즉, 모든 TextView는 세로 및 가로 가운데에 있어야합니다. 이제 TextView 중 하나를 왼쪽 / 오른쪽으로 이동하려면 TextView에서 layout_gravity를 사용하여 지정된 중력 동작을 재정의 할 수 있습니다.
보너스 : 자세히 살펴보면 TextView 내의 텍스트가 하위보기로 작동한다는 것을 알 수 있습니다. 따라서 TextView에 중력을 적용하면 TextView 내부의 텍스트가 이동합니다. (전체 개념도 여기에 적용됩니다)
중력 : textview, edittext 등과 같은 간단한 뷰에 사용됩니다.
layout_gravity : 선형 레이아웃 또는 FrameLayout과 같은 상대 부모보기와 관련하여 현재보기에만 중력에 사용되어 부모의 중심 또는 다른 중력으로 볼 수 있습니다.