2017-11-27 1 views
1

3 개의 버튼으로 구성된 하단 탐색 인 다른 파일을 포함하는 간단한 레이아웃을 Android에서 시도합니다.포함 된보기를 레이아웃의 부모 바닥에 정렬 할 수 없습니다.

포함 된 파일을 맨 아래에 정렬 할 수 없습니다. 다음은 레이아웃 내 XML은합니다 (텍스트 뷰는 부모의 하단에 정렬까지 보여 주지만, 파일을 포함하지 않습니다) :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/activity_background" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@android:color/white" 
> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/patientDOBBlock" 
    tools:text="Test Navigation Text" 
    android:layout_alignParentBottom="true"/> 
<include 
    android:id="@+id/navigation" 
    android:layout_below="@+id/patientDOBBlock" 
    layout="@layout/bottom_navigation" 
    android:layout_height="66dp" 
    android:layout_width="match_parent" 
    app:layout_constraintBottom_toBottomOf="parent" 
    android:layout_alignParentBottom="true"/> 

</RelativeLayout> 

포함 된 파일 : 왜

<merge xmlns:android="http://schemas.android.com/apk/res/android"> 
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/task_base_buttons" 
android:layout_width="match_parent" 
android:layout_height="66dp" 
android:layout_marginBottom="8dp" 
android:layout_marginEnd="8dp" 
android:layout_marginStart="8dp" 
app:layout_constraintBottom_toBottomOf="parent" 
app:layout_constraintEnd_toEndOf="parent" 
app:layout_constraintStart_toStartOf="parent"> 

    <Button 
     android:id="@+id/btnTaskBack" 
     style="@style/NeutrifProText.Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="8dp" 
     android:layout_weight="0.2" 
     android:background="@android:color/transparent" 
     android:text="@string/action_back" 
     android:textColor="@color/colorPrimary" 
     app:layout_constraintBottom_toBottomOf="@+id/btnTaskContinue" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/btnTaskContinue" /> 

    <Button 
     android:id="@+id/btnTaskContinue" 
     style="@style/NeutrifProText.Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_weight="0.6" 
     android:background="@drawable/rounded_rect_color_primary" 
     android:text="@string/action_continue" 
     android:textColor="@color/white" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toStartOf="@+id/btnTaskSkip" 
     app:layout_constraintStart_toEndOf="@+id/btnTaskBack" /> 

    <Button 
     android:id="@+id/btnTaskSkip" 
     style="@style/NeutrifProText.Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_weight="0.2" 
     android:background="@android:color/transparent" 
     android:text="@string/action_skip" 
     android:textColor="@color/colorPrimary" 
     app:layout_constraintBottom_toBottomOf="@+id/btnTaskContinue" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/btnTaskContinue" /> 

</android.support.constraint.ConstraintLayout> 
</merge> 

어떤 생각? BTW,이 포함 된 파일은 조각의 맨 아래에 나타납니다.

편집 : 나는 레이아웃이 상위 바닥과 patientDOBBlock 아래 정렬 포함 된 레이아웃이 레이아웃에서 바닥

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/task_constraint_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.rangerhealth.rangerprovider.view.fragment.BaseTaskFragment" 
tools:layout_editor_absoluteX="0dp" 
tools:layout_editor_absoluteY="25dp"> 

<!-- TODO: Update blank fragment layout --> 

<TextView 
    android:id="@+id/task_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="50dp" 
    android:gravity="center" 
    android:textColor="@color/black" 
    android:textSize="@dimen/title_font_size" 
    tools:text="Title" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toTopOf="parent" /> 

<TextView 
    android:id="@+id/task_subtitle" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/task_title" 
    android:layout_centerHorizontal="true" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="17dp" 
    android:gravity="center" 
    tools:text="Subtitle" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/task_title" /> 

<TextView 
    android:id="@+id/task_description" 
    android:layout_width="match_parent" 
    android:layout_height="21dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="8dp" 
    android:gravity="center_horizontal" 
    tools:text="Description" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/task_subtitle" /> 


<include layout="@layout/bottom_navigation" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    /> 

<RelativeLayout 
    android:id="@+id/task_placeholder" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    android:layout_marginTop="8dp" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/task_description" 
    app:layout_constraintBottom_toTopOf="@id/task_base_buttons" 
    > 

</RelativeLayout> 
</android.support.constraint.ConstraintLayout> 

답변

1

사실, 나는있는 LinearLayout을 추가했고, 다음 모든 일 :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_background" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@android:color/white"> 


<TextView 
    android:id="@+id/patientDOBBlock" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/navigation" 
    android:gravity="center" 
    tools:text="Test Navigation Text" /> 
<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true" 
android:id="@+id/navigation"> 

<include 
    android:id="@+id/constraintLayoutNavigation" 
    layout="@layout/bottom_navigation" 
    android:layout_width="match_parent" 
    android:layout_height="66dp" 
    android:layout_alignParentBottom="true" /> 
</LinearLayout> 

</RelativeLayout> 
1

에 나타나지 않는 조각의 레이아웃을 포함하고있다. 이 두 지시어는 충돌합니다. 아래쪽 네비게이션과 텍스트보기를 모두 부모 바닥에 정렬하고 겹치기를 원한다고 가정합니다. merge 태그를 제거, bottom_navigation.xml에서

<RelativeLayout 
    android:id="@+id/activity_background" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white"> 

    <TextView 
     android:id="@+id/patientDOBBlock" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     tools:text="Test Navigation Text" /> 

    <include 
     android:id="@+id/navigation" 
     layout="@layout/bottom_navigation" 
     android:layout_width="match_parent" 
     android:layout_height="66dp" 
     android:layout_alignParentBottom="true" 
     app:layout_constraintBottom_toBottomOf="parent" /> 
</RelativeLayout> 

다음 레이아웃을 잎

android:layout_below="@+id/patientDOBBlock" 

다음 다음 줄을 제거 포함하여 레이아웃에서

. documentation에서 :

이 태그는 한 레이아웃을 다른 레이아웃에 포함 할 때 뷰 계층 구조에서 중복 뷰 그룹을 제거하는 데 도움이됩니다.

포함 된 파일에 ConstraintLayout을 유지해야하므로 중복보기 그룹이 없기 때문에 병합 태그가 필요하지 않습니다. 병합 태그를 사용하면 포함 매개 변수에 레이아웃 매개 변수를 적용 할 수 없습니다. this을 참조하십시오.

포함 된 레이아웃의 루트보기의 모든 레이아웃 매개 변수 (모든 android : layout_ * 속성)를 태그에 지정하여 무시할 수도 있습니다. 여기

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/task_base_buttons" 
    android:layout_width="match_parent" 
    android:layout_height="66dp" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="8dp" 
    android:layout_marginStart="8dp" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent"> 

    <Button 
     android:id="@+id/btnTaskBack" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="8dp" 
     android:layout_weight="0.2" 
     android:background="@android:color/transparent" 
     android:text="action_back" 
     android:textColor="@color/colorPrimary" 
     app:layout_constraintBottom_toBottomOf="@+id/btnTaskContinue" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/btnTaskContinue" /> 

    <Button 
     android:id="@+id/btnTaskContinue" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_weight="0.6" 
     android:background="@color/colorPrimary" 
     android:text="action_continue" 
     android:textColor="@android:color/white" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toStartOf="@+id/btnTaskSkip" 
     app:layout_constraintStart_toEndOf="@+id/btnTaskBack" /> 

    <Button 
     android:id="@+id/btnTaskSkip" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_weight="0.2" 
     android:background="@android:color/transparent" 
     android:text="action_skip" 
     android:textColor="@color/colorPrimary" 
     app:layout_constraintBottom_toBottomOf="@+id/btnTaskContinue" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/btnTaskContinue" /> 

</android.support.constraint.ConstraintLayout> 

는 결과이다 : 그것은 아무것도 아프게하지 않지만 부모도 ConstraintLayout 경우를 제외하고는 ConstraintLayout에 지정된 제약 조건이 적용되지 않습니다

enter image description here

때문에 그냥 삭제할 수 있습니다.

1

다음과 같이 XML을 변경하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_background" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white"> 


    <TextView 
     android:id="@+id/patientDOBBlock" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/navigation" 
     android:gravity="center" 
     tools:text="Test Navigation Text" /> 

    <include 
     android:id="@+id/navigation" 
     layout="@layout/bottom_navigation" 
     android:layout_width="match_parent" 
     android:layout_height="66dp" 
     android:layout_alignParentBottom="true" /> 

</RelativeLayout> 

bottom_navigation.xxx

<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/task_base_buttons" 
android:layout_width="match_parent" 
android:layout_height="66dp" 
android:layout_marginBottom="8dp" 
android:layout_marginEnd="8dp" 
android:layout_marginStart="8dp" 
app:layout_constraintBottom_toBottomOf="parent" 
app:layout_constraintEnd_toEndOf="parent" 
app:layout_constraintStart_toStartOf="parent"> 

    <Button 
     android:id="@+id/btnTaskBack" 
     style="@style/NeutrifProText.Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="8dp" 
     android:layout_weight="0.2" 
     android:background="@android:color/transparent" 
     android:text="@string/action_back" 
     android:textColor="@color/colorPrimary" 
     app:layout_constraintBottom_toBottomOf="@+id/btnTaskContinue" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/btnTaskContinue" /> 

    <Button 
     android:id="@+id/btnTaskContinue" 
     style="@style/NeutrifProText.Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_weight="0.6" 
     android:background="@drawable/rounded_rect_color_primary" 
     android:text="@string/action_continue" 
     android:textColor="@color/white" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintEnd_toStartOf="@+id/btnTaskSkip" 
     app:layout_constraintStart_toEndOf="@+id/btnTaskBack" /> 

    <Button 
     android:id="@+id/btnTaskSkip" 
     style="@style/NeutrifProText.Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_weight="0.2" 
     android:background="@android:color/transparent" 
     android:text="@string/action_skip" 
     android:textColor="@color/colorPrimary" 
     app:layout_constraintBottom_toBottomOf="@+id/btnTaskContinue" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/btnTaskContinue" /> 

</android.support.constraint.ConstraintLayout> 

나는 그것이 당신을 위해 작동하기를 바랍니다.

enter image description here

0
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/activity_background" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@android:color/white" 
> 
<TextView 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/patientDOBBlock" 
tools:text="Test Navigation Text" 
android:layout_above = "@+id/navigation"/> 

<include 
android:id="@id/navigation" 
android:layout_alignParentBottom = "true" 
layout="@layout/bottom_navigation" 
android:layout_height="66dp" 
android:layout_width="match_parent" 
/> 
</RelativeLayout> 

이 완벽하게

작동합니다
관련 문제