2017-03-20 6 views
10

가 나는 ConstraintLayout의 텍스트 뷰와 순서, 수평으로 조직 된 버튼,이 사용할 수 무엇에 필요한 공간을 차지 요소 유무 : Working caseConstraintLayout -

내가 첫 번째 요소 (텍스트 뷰)가 필요를 취할 텍스트가 충분히 짧을 때 필요한 공간 만 필요하지만 더 많은 텍스트를 표시해야하는 경우 필요에 따라 확장해야하며 두 번째 요소 (Button)가 뷰 내부에서 완전히 렌더링되도록 공간을 남겨두고 끝은 끝으로 맞 춥니 다. 부모의

은 XML이 현재 모습입니다 같은 :

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="16dp"> 

    <TextView 
     android:id="@+id/element1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginEnd="8dp" 
     android:layout_marginRight="8dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:text="Short enough text"/> 

    <Button 
     android:id="@+id/element2" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" 
     android:layout_gravity="center_vertical" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:drawableLeft="@drawable/element2ButtonDrawable" 
     android:drawablePadding="0dp" 
     android:drawableStart="@drawable/element2ButtonDrawable" 
     android:text="Action" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toRightOf="@id/element1" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintHorizontal_bias="0.0"/> 

</android.support.constraint.ConstraintLayout> 

이 "바닥의 대부분이 외부 밀어 얻을 수있는 긴 텍스트의 원인이됩니다 해당 방법"짧은 충분한 텍스트 "로 전환 할 때 나무가 렌더링입니다 부모 뷰 경계 "의 :

Bad case

그것은 내가 ConstraintLayout를 사용하여 할 노력하고있어 달성 할 수 있습니까?

감사합니다 (글을 쓰는 시점에서 최신 버전은 1.0.2이다)! 이 같은

+1

안드로이드가 : 최대 길이 텍스트 뷰에 대한 = "maxNumberOfChars"그러나이되지 않습니다 서로 다른 화면 크기를 처리하십시오. – LSA

+0

예, 현재 해결 방법이며 정확하게 현재 문제입니다.><감사합니다! – droid256

+0

코드에 액세스 할 수 있습니까? –

답변

1

당신이해야 당신의 텍스트 뷰는 제약 및 수평 바이어스 여기

0.0에 해당 솔루션의 일치 폭을 갖는 포장 수평 체인을 사용

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="16dp"> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="8dp" 
     android:text="Short enough text" 
     app:layout_constraintWidth_default="wrap" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toLeftOf="@+id/button" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_chainStyle="packed" 
     app:layout_constraintHorizontal_bias="0.0" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:drawablePadding="0dp" 
     android:drawableStart="@drawable/element2buttondrawable" 
     android:text="Action" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toRightOf="@+id/textView" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

은 여기를 이 레이아웃이 텍스트와 방향이 다른 기기에서 보이는 모양 :

,363,210

Result view

당신은 다음 게시물에 체인을 사용하는 방법에 대한 자세한 내용을보실 수 있습니다 :

1

시도 뭔가 :

<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:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="16dp"> 

    <TextView 
     android:id="@+id/element1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginRight="8dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toLeftOf="@+id/element2" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:text="A longer text that will cause most of the bottom to get pushed outside of the parent view bounds" /> 

    <Button 
     android:id="@+id/element2" 
     android:layout_width="wrap_content" 
     android:layout_height="48dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginStart="8dp" 
     android:text="Action" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="1.0" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 
관련 문제