티스토리 뷰

layout_gravity : 대상이 되는 뷰의 부모 컨테이너의 공간에서의 위치를 정렬할 때 사용

gravity : 뷰안의 내용을 정렬할 때 사용(텍스트뷰는 글자가 내용이 되고, 이미지뷰는 이미지가 내용이 됨)




먼저 gravity를 테스트 해본다.

         super.onCreate(savedInstanceState);
        


        //리니어 레이아웃 인스턴스 생성 후 뷰들을 배치할 방향을 설정
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);           
        //(vertical,horizonal)

        //생성한 레이아웃에 들어갈 속성을 결정할 파라미터 생성(가로,세로)
        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);

        //버튼을 생성하고 레이아웃파라미터를 세팅. 그리고 layout에 추가
        Button b = new Button(this);

        b.setGravity(Gravity.LEFT);
        b.setText("하이");
        b.setLayoutParams(params);

        layout.addView(b);

        Button b1 = new Button(this);
        b1.setGravity(Gravity.CENTER);
        b1.setText("하이1");
        b1.setLayoutParams(params);

        layout.addView(b1);

        Button b2 = new Button(this);
        b2.setGravity(Gravity.RIGHT);
        b2.setText("하이2");
        b2.setLayoutParams(params);

        layout.addView(b2);

        //최종적으로 뷰에 셋팅
        setContentView(layout);

버튼이라는 뷰로 테스트 하고 있다. setGravity메서드를 이용해 뷰의 정렬방향을 지정하고 있다.



결과화면

결과화면 보면 알겠지만 뷰(버튼)안의 내용물(텍스트)에 대해서 정렬을 수행하고 있다.





그 다음은 layout_gravity테스트이다.

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



    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:text="button_left"
        android:layout_gravity="left"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button2"
        android:text="button_center"
        android:layout_gravity="center"
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:text="button_right"
        android:layout_gravity="right"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button4"
        android:text="button_top"
        android:layout_gravity="top"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button5"
        android:text="button_end"
        android:layout_gravity="end"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button6"
        android:text="button_bottom"
        android:layout_gravity="bottom"
        />

</LinearLayout>

여러가지 속성 값이 존재 하지만 그중에서 6개의 값만을 확인해본다.



결과화면

결과를 보면 해당 뷰의 부모 공간에 뷰가 채워져 있지 않으면 설정한 layout_gravity속성의 값대로 뷰가 정렬하는 것을 알수 있다.

하지만 이상한 결과라는 것을 알 수 있다.

top은 최상단에 위치하고 bottom같은 경우 최하단에 붙어서 결과가 나올 것 같았지만 아니었다.

(사진이 편집으로 잘려서 그렇지만 세로방향으로의 공간이 잘려있다.)




그래서 LinearLayout의 속성인 orientation을 horizonal로 두고 bottom에 대해서만 다시 확인해 보니..


이런 결과가 나왔다....

결론은 orientation의 값인 vertical과 horizonal에 따라서 정렬이 정상적으로 되는 속성 값이 있다는 것을 알 수 있다.




텍스트뷰 같은 뷰들을 정렬하다 보면 다른 텍스트 뷰나 버튼에 들어있는 텍스트와 높이가 맞지 않는 경우를 볼 수 있다.

이 같은 경우

<LinearLayout
android:baselineAligned="true" />

baselineAligned속성을 이용하면 텍스트의 아랫줄이 맞춰진 상태로 볼 수 있다.



텍스트의 아랫줄이 맞지 않을 때


baselineAligned 적용 후






'Android > 정리' 카테고리의 다른 글

화면 이동과 데이터 전달  (0) 2016.05.09
레이아웃 인플레이션  (0) 2016.05.09
FrameLayout 프레임레이아웃  (0) 2016.05.03
TableLayout 테이블레이아웃  (0) 2016.05.03
안드로이드 개발  (0) 2016.04.28
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday