android - 오른쪽 - 화면 하단에서 뷰를 정렬하는 방법은 무엇입니까?




안드로이드 오른쪽 아래 (12)

1. 루트 레이아웃에서 ConstraintLayout

레이아웃을 화면 하단에 놓으려면 app:layout_constraintBottom_toBottomOf="parent" 로 설정하십시오.

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintBottom_toBottomOf="parent">
</LinearLayout>

2. 루트 레이아웃에서 FrameLayout 을 사용하십시오.

레이아웃에서 android:layout_gravity="bottom" 을 설정하기 만하면됩니다 android:layout_gravity="bottom"

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:orientation="horizontal">
</LinearLayout>

루트 레이아웃에서 LinearLayout ( android:orientation="vertical" )

(1) 레이아웃 설정 android:layout_weight="1" 레이아웃 상단에

<TextView
    android:id="@+id/TextView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:text="welcome" />

(2) android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" 자식 LinearLayout 을 설정합니다 android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom"

주요 속성은 ndroid:gravity="bottom" 이고, 자식 뷰는 Layout의 맨 아래에 있습니다.

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    android:orientation="horizontal">
</LinearLayout>

4. 루트 레이아웃에서 RelativeLayout

android:layout_alignParentBottom="true" 를 설정하면 화면 하단의 레이아웃을 볼 수 있습니다.

<LinearLayout
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">
</LinearLayout>

산출

내 레이아웃 코드는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:text="@string/welcome" 
        android:id="@+id/TextView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    </TextView>

    <LinearLayout android:id="@+id/LinearLayout" 
        android:orientation="horizontal"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="bottom">

            <EditText android:id="@+id/EditText" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content">
            </EditText>

            <Button android:text="@string/label_submit_button" 
                android:id="@+id/Button" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </Button>

    </LinearLayout>

</LinearLayout>

이 모양은 왼쪽에 있고 내가 원하는 모양은 오른쪽에 있습니다.

확실한 대답은 TextView를 height에 대해 fill_parent로 설정하는 것이지만 버튼이나 입력 필드에 남겨 둘 여유가 없습니다. 본질적으로 문제는 제출 버튼과 텍스트 입력을 하단과 텍스트보기에서 고정 된 높이로 공간의 나머지 부분을 채우고 싶습니다. 마찬가지로 선형 레이아웃에서 제출 버튼에서 내용을 감싸고 싶습니다. 나머지 공간을 채우기위한 텍스트 입력

Linear Layout의 첫 번째 항목이 fill_parent에 전달되면 다른 항목의 여유 공간을 남기지 않고 정확히 수행합니다. 첫 번째 항목은 선형 레이아웃에서 나머지 항목의 최소 요구 사항을 제외한 모든 공간을 채우려면 어떻게해야합니까? 레이아웃의 항목?

편집하다:

상대적 레이아웃이 실제로 대답이었습니다 - 감사합니다!

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

    <TextView 
        android:text="@string/welcome" 
        android:id="@+id/TextView"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">
    </TextView>

    <RelativeLayout 
        android:id="@+id/InnerRelativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <Button 
            android:text="@string/label_submit_button" 
            android:id="@+id/Button"
            android:layout_alignParentRight="true" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </Button>

        <EditText 
            android:id="@+id/EditText" 
            android:layout_width="fill_parent"
            android:layout_toLeftOf="@id/Button"
            android:layout_height="wrap_content">
        </EditText>

    </RelativeLayout>

</RelativeLayout>

HEADER와 FOOTER 모두 생성하기, 여기에 예제가있다.

[레이아웃 XML]

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/backgroundcolor"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:background="#FF0000">
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:background="#FFFF00">
    </RelativeLayout>

</RelativeLayout>

[스크린 샷]

희망이 도움이됩니다. 감사!!


LinearLayout 또는 ScrollView로도이 작업을 수행 할 수 있습니다. 때로는 RelativeLayout을 구현하는 것이 더 쉽습니다. 당신이해야 할 유일한 일은 화면의 하단에 정렬하고자하는보기 전에 다음보기를 추가하는 것입니다 :

<View
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1" />

이렇게하면 빈보기가 만들어지고 빈 공간이 채워지고 다음보기가 화면 아래쪽으로 밀려납니다.


Timores의 우아한 솔루션을 따라하면, 다음과 같이하면 수직 LinearLayout에 수직 채우기가 생성되고 수평 LinearLayout에 수평 채우기가 생성됩니다.

<Space
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1" />

많은 변경을 원하지 않으면 다음을 넣을 수 있습니다.

android:layout_weight="1"

@+id/TextView 와 같은 ID를 갖는 @+id/TextView

<TextView android:text="@string/welcome" 
    android:id="@+id/TextView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_weight="1">
</TextView>

상위 아이 뷰 (TextView @ + id / TextView )에 android:layout_weight="1" 속성을 지정할 수 있습니다.

그러면 아래의 다른 모든 요소가 강제로 아래로 이동합니다.


위의 대답은 (Janusz에 의해) 꽤 정확 합니다만, 나는 개인적으로 RelativeLayouts와 100 % 편협하다고 느끼지 않습니다. 그래서 필자는 빈 TextView를 다음과 같이 소개합니다 :

<!-- filler -->
<TextView android:layout_height="0dip" 
          android:layout_width="fill_parent"
          android:layout_weight="1" />

화면 맨 아래에 있어야하는 요소 앞에.


이것은 또한 작동합니다.

<LinearLayout 
    android:id="@+id/linearLayout4"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_below="@+id/linearLayout3"
    android:layout_centerHorizontal="true"
    android:orientation="horizontal" 
    android:gravity="bottom"
    android:layout_alignParentBottom="true"
    android:layout_marginTop="20dp"
>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 

    />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" 


    />

</LinearLayout>


이와 같은 경우에는 항상 RelativeLayouts를 사용하십시오. LinearLayout는 그러한 용도로 사용하기위한 것이 아닙니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/db1_root"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- Place your layout here -->

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom"
    android:orientation="horizontal"
    android:paddingLeft="20dp"
    android:paddingRight="20dp" >

    <Button
        android:id="@+id/setup_macroSavebtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Save" />

    <Button
        android:id="@+id/setup_macroCancelbtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Cancel" />

    </LinearLayout>

</RelativeLayout>

첫 번째 레이아웃 안에 두 번째 relative 레이아웃을 중첩하지 않아도됩니다. 버튼EditText 에서 android:layout_alignParentBottom="true" 를 사용하기 만하면됩니다.


상대적인 레이아웃을 시도해야한다고 생각합니다.
전체 화면을 채우는 상대적인 레이아웃이 있다면 android:layout_alignParentBottom 을 사용하여 버튼을 화면의 아래쪽으로 옮길 수 있습니다.

하단의 뷰가 상대 레이아웃에 표시되지 않으면 위의 레이아웃이 모든 공간을 차지할 수 있습니다. 이 경우 레이아웃 파일의 맨 아래에 있어야하는 뷰를 배치하고 나머지 레이아웃은 android:layout_above 뷰 위에 배치 할 수 있습니다. 이렇게하면 아래쪽보기가 필요한만큼의 공간을 차지할 수 있고 나머지 레이아웃은 나머지 모든 화면을 채울 수 있습니다.


<RelativeLayout> 에서 android:layout_alignParentBottom="true" 를 사용하십시오.

이것은 확실히 도움이 될 것입니다.





android-layout