2017-11-28 2 views
1

Hoffentlich bin ich hier nicht vollständig dick, aber ich bin nicht in der Lage, die Grundlinie eines TextView auf eine Richtlinie in einem ConstraintLayout auszurichten. Es scheint, dass die Leitlinie keine Basislinie hat, was ziemlich ärgerlich ist. Weiß jemand, wie ich das erreichen könnte? Hier ist ein bisschen Layout xml, das nicht funktioniert (dies ist in einem ConstraintLayout):Ausrichten der Grundlinie von TextView zu Richtlinie in Zwangsbedingungen Layout

    <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

wie Ihr Layout würde angezeigt werden? was willst du archivieren? –

Antwort

1

Ich glaube, ich könnte mit einer Lösung einfallen lassen, habe ich versucht, Baseline erstreckt und wiederkehr 0 von ‚getBaseline‘, sondern dass wurde nie aufgerufen, also habe ich versucht, stattdessen AppCompatButton zu erweitern und 'getMeasuredHeight' stattdessen von 'getBaseline' zurückzugeben (genau wie ImageView, wenn 'baselineAlignBottom' verwendet wird) und dies scheint jetzt korrekt zu funktionieren. Das TextView muss nur geändert werden, um seine Basislinie an der Schaltfläche anstatt an der Richtlinie auszurichten. Ich muss es mit Attributen ähnlich zu ImageView aufräumen, aber das ist, was ich für jetzt habe:

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(); 
    } 
} 
Verwandte Themen