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.