2017-11-28 1 views
1

여기서는 완전히 두꺼운 것은 아니지만, TextView의 기준선을 ConstraintLayout의 지침에 맞출 수 없습니다. 가이드 라인에는 기준선이 없으므로 귀찮습니다. 아무도 내가 이것을 어떻게 달성 할 수 있는지 안다? 여기에 작동하지 않는 레이아웃 XML의 비트 (이것은 ConstraintLayout 내)입니다 :Constraint Layout에서 TextView의 기준선을 지침에 맞 춥니 다

    <TextView 
        android:id="@+id/textToAlignBaseline" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="20dp" 
        android:maxLines="1" 
        android:paddingRight="6dp" 
        android:textAppearance="@style/TextStyles.Body" 
        app:layout_constraintBaseline_toBaselineOf="@+id/guidelineBottomMargin" 
        app:layout_constraintLeft_toLeftOf="parent" /> 

       <Button 
        android:id="@+id/buttonToAlignBottom" 
        android:layout_width="wrap_content" 
        android:layout_height="39dp" 
        android:layout_marginRight="20dp" 
        android:background="@drawable/selector_button_bg" 
        android:paddingLeft="16dp" 
        android:paddingRight="16dp" 
        android:text="@string/clickme" 
        android:textAppearance="@style/TextStyles.Body" 
        app:layout_constraintBottom_toTopOf="@+id/guidelineBottomMargin" 
        app:layout_constraintRight_toRightOf="parent" /> 

       <android.support.constraint.Guideline 
        android:id="@+id/guidelineBottomMargin" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        app:layout_constraintGuide_end="20dp" /> 
+0

레이아웃이 어떻게 표시 될까요? 무엇을 보관 하시겠습니까? –

답변

1

가 나는 해결책을 올 것 같아, 나는베이스 라인을 확장하고 'getBaseline가'하지만 0 반환 시도 절대로 AppCompatButton을 확장하고 대신 'getBaseline'에서 'getMeasuredHeight'를 반환 해 보았습니다 ('baselineAlignBottom'이 사용되는 경우 ImageView가 사용하는 것과 같음). 이제 제대로 작동하는 것 같습니다. TextView는 기준선 대신 버튼으로 기준선을 정렬하기 위해 변경해야합니다. ImageView와 비슷한 속성으로 이미지를 지워야하지만 지금 당장 가지고있는 이미지입니다.

public class ButtonBottomBaseline extends android.support.v7.widget.AppCompatButton { 
    public ButtonBottomBaseline(Context context) { 
     super(context); 
    } 

    public ButtonBottomBaseline(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public ButtonBottomBaseline(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public int getBaseline() { 
     return getMeasuredHeight(); 
    } 
} 
관련 문제