Android : FrameLayout을 사용하여 화면 오른쪽 하단에 버튼을 정렬 하시겠습니까?


106

지도의 확대 / 축소 컨트롤을 화면 오른쪽 하단에 배치하려고합니다. alignParentBottom="true"및 둘 다 사용하여 RelativeLayout으로 할 수 alignParentRight="true"있지만 Framelayout을 사용 하면 그러한 속성을 찾지 못했습니다. 화면 오른쪽 하단에 어떻게 정렬합니까?

답변:


252

실제로 다른 답변에서 말한 내용에도 불구하고 가능합니다. 당신이있는 경우 FrameLayout, 그리고 바닥에 자식 항목을 배치하려면, 당신은 사용할 수 android:layout_gravity="bottom"와의 바닥에 그 아이를 정렬려고하고있다 FrameLayout.

나는 그것을 사용하고 있기 때문에 그것이 작동한다는 것을 알고 있습니다. 늦었다는 것을 알고 있지만 Google에서 상위 순위에 있기 때문에 다른 사람들에게 유용 할 수 있습니다.


7
안녕하세요 byte1918, 이것이 질문에 대한 정답이 아니라고 생각한다면 환영합니다. 올바른 솔루션을 게시하면 모두에게 유용 할 것이라고 생각합니다. 또는 적어도 이것이 잘못된 대답을 만드는 이유를 설명하십시오. 감사.
— lblasa

33
오른쪽 하단을 정렬하려면 android : layout_gravity = "bottom | right"를 사용할 수 있습니다.
— Marcin Raczkowski 2013 년

1
미리보기에 즉시 반영되지 않으면 디자인 탭에서 설정해보십시오. 일반적으로, 작동
— yUdoDis

나는 Textview로 시도했지만 작동하지 않습니다
— The Only Smart Boy

51

나는 또한이 상황에 직면하여 FrameLayout을 사용하여 수행하는 방법을 알아 냈습니다. 다음 출력은 아래 주어진 코드에 의해 생성됩니다.

FrameLayout을 사용하여 이미지 위에 표시되는 오른쪽 아래 정렬 된 일부 텍스트.

              <FrameLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/contactbook_icon"
                        android:layout_gravity="center" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="140"
                        android:textSize="12dp"
                        android:textColor="#FFFFFF"
                        android:layout_gravity="bottom|right"
                        android:layout_margin="15dp" />
                </FrameLayout>

여백 값을 변경하여 이미지 위의 텍스트 위치를 조정합니다. 여백을 제거하면 텍스트가 때때로보기에서 벗어날 수 있습니다.


최고의 답변 ... 감사합니다. 오랜 미스터리를 해결했습니다.
— YvesLeBorg

38

다음을 사용하여 달성 할 수 있습니다. RelativeLayout

<RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

   <ImageView 
      android:src="@drawable/icon"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_alignParentBottom="true" />

</RelativeLayout>

1
wrap_content에서 사용 하는 경우 작동하지 않습니다 RelativeLayout. 어쨌든 RelativeLayout은 전체 화면에서 크기가 조정 되었기 때문입니다.
— Yura Shinkarev

15

android:layout_gravity="bottom|right"나를 위해 일한 설정


9

이를 수행하는 두 가지 방법 :

1) 프레임 레이아웃 사용

android:layout_gravity="bottom|right"

2) 상대 레이아웃 사용

android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" 


3

자바 코드로 시도하고 싶다면. 여기 있습니다-

    final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
                                             LayoutParams.WRAP_CONTENT);
    yourView.setLayoutParams(params);
    params.gravity = Gravity.BOTTOM; // set gravity

내가 원하는 것. 약간의 추가-LayoutParams는 FrameLayout.LayoutParams에서 가져와야합니다. 오른쪽 하단 모서리를 사용하려면 다음을 사용하십시오. params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
— SajithK

2

FrameLayout에 보이지 않는 TextView를 추가 할 수 있습니다.

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:visibility="invisible"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <Button
            android:id="@+id/daily_delete_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="DELETE"
            android:layout_gravity="center"/>
        <Button
            android:id="@+id/daily_save_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="SAVE"
            android:layout_gravity="center"/>
    </LinearLayout>


0

안드로이드 스튜디오 activity.xml 페이지의 제약 위젯을 사용하여이를 수행하는 방법은 많습니다.

가장 일반적인 두 가지 방법은 다음과 같습니다.

  1. 버튼보기를 선택하고 여백을 조정합니다.
  2. "모든 속성"으로 이동 한 다음 "layout_constraints"로 이동 한 다음
    • layout_constraintBottom_toBottomOf_parent
    • layout_constraintRight_toRightOf_parent

-3

FrameLayout으로는 할 수 없습니다.

사양에서 :

http://developer.android.com/reference/android/widget/FrameLayout.html

"FrameLayout은 단일 항목을 표시하기 위해 화면의 영역을 차단하도록 설계되었습니다. FrameLayout에 여러 하위 항목을 추가 할 수 있지만 모든 하위 항목은 화면 왼쪽 상단에 고정됩니다."

RelativeLayout을 사용하지 않는 이유는 무엇입니까?


지도와 겹치는 목록을 왼쪽에 표시하고 싶습니다. 오 RelativeLayout으로 가능하지 않습니까? 알았어 고마워.
— Rohith Nandakumar

1
"그러나 모든 아이들은 화면의 왼쪽 상단에 고정되어 있습니다."-반드시 화면의 상단이 아니라 오른쪽, 하단 등에 정렬 할 수 있습니까?
— Rohith Nandakumar

예, RelativeLayout으로 가능합니다. 서로 위에 뷰를 배치 할 수 있습니다.
— Juhani

이것은 실제로 절반이 맞습니다. OP가 요구하는 것은 달성 가능하지만 언급했듯이 코스의 관점이 제한적입니다. 그러나 이것이 '달성 할 수 없다'고 말하는 것은 잘못된 것입니다!
— sud007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.