2017-12-14 42 views
1

요일에 7 개의 상자가 필요한 안드로이드 UI를 만들려고합니다. 이를 위해 ConstraintLayout을 사용하여 어떤 화면에서든 뷰의 크기를 자동으로 조정할 수 있도록했습니다.ConstraintLayout 가중치보기 사이의 간격은?

"spread_inside"속성을 사용하여 7 개의 뷰 사이에 체인을 만들었지 만 이후 TextViews의 특성으로 인해 뷰의 폭이 wrap_content로 설정되었으므로 뷰의 폭이 동일하지 않습니다. 그래서 7 개의 뷰 너비를 모두 0dp로 설정하여 동일한 너비로 만들려고했습니다. 이 방법은 효과가 있지만보기 간에는 공간이 없습니다. 이 7 가지보기 사이에 간격을 추가하는 방법이 있습니까? 아니면 모든 화면에서 자동 크기 조정 기능을 유지하면서 7 개의 뷰 모두에 "등 폭"을 얻는 다른 방법이 있습니까? ConstraintLayout으로도 가능합니까? 아니면 이런 종류의 작업을 위해 LinearLayout을 계속 사용해야합니까? (마지막 스크린 샷에서 볼 수 있듯이)

화면이 작을 때 내보기가 축소되고 화면이 클 때 수준까지 확장됩니다. 그것이 어떻게 보이는지 아래의 스크린 샷을보십시오. I는 (마지막 샷 같이 8dp 폭 레이아웃에 투명 분배기를 추가하여 I이 달성의 LinearLayout에) 각각의 뷰 사이 8dp 패딩을 추가 할

On a large screen

On a small screen

On a very large screen

How it should look, achieved using LinearLayout

는 보일 것입니다 방법의 LinearLayout

,691 사용하여 달성

답변

1

너비가 모두 같으려는 경우 spread_inside이 필요하지 않은 경우 너비를 0dp으로 설정 한 다음보기에 여백을 추가하십시오. 예를 들면 :

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <View 
     android:id="@+id/view1" 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_marginRight="4dp" 
     android:layout_marginLeft="8dp" 
     android:background="#ffff0000" 
     app:layout_constraintEnd_toStartOf="@+id/view2" 
     app:layout_constraintStart_toStartOf="parent"/> 

    <View 
     android:id="@+id/view2" 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginLeft="4dp" 
     android:background="#ff00ff00" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toEndOf="@+id/view1"/> 

</android.support.constraint.ConstraintLayout> 

은 첫 번째와 마지막보기 만 한 여유 공간이있을 것이다 뷰 사이의 공간이 여백의 합이 될 것이라는 점을 명심하십시오, 그래서 당신은 뷰 사이의 여백 4dp처럼 (적절하게 설정해야 첫 번째 및 마지막 여백은 8dp)

+0

고마워요! 나는 그것을 아침에 시험해보고 당신에게 알려줄 것입니다. –

+0

7 개의 뷰의 왼쪽 및 오른쪽 (시작과 끝) 여백 대신 하나의 구분선 드로어 블을 관리하는 것이 더 쉽기 때문에 지금 LinearLayout 및 구분선을 고수 할 것입니다. 당신의 응답을 주셔서 감사합니다! –