6

Ich möchte die Grundlinie von TextView "Deficient" mit der von EditText "10000" ausrichten. Sie sind beide innerhalb <android.support.percent.PercentRelativeLayout>Ausrichten der Grundlinie mit einer TextView, die in ein TextInputLayout eingeschlossen wird

enter image description here

ich folgendes probiert, aber es kann nicht die Arbeit.

<android.support.percent.PercentRelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/textInputLayout_soil_nitrogen" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     app:layout_widthPercent="63%"> 

     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Enter N of soil" 
      tools:text="10000" /> 

    </android.support.design.widget.TextInputLayout> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toEndOf="@id/textInputLayout_soil_nitrogen" 
     android:layout_toRightOf="@id/textInputLayout_soil_nitrogen" 
     app:layout_widthPercent="37%" 
     tools:text="Deficient" /> 

</android.support.percent.PercentRelativeLayout> 

Giving eine Top-Polsterung von 20DP an die Textview Art der Trick funktioniert, aber es wäre schön gewesen, ihre Grundlinien statt auszurichten. Ist das in diesem Fall überhaupt möglich?

Ich habe die TextAppearance und ID-Attribute, BTW entfernt.

Antwort

1

Bitte ersetzen Sie unter Codezeile

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toEndOf="@id/textInputLayout_soil_nitrogen" 
     android:layout_toRightOf="@id/textInputLayout_soil_nitrogen" 
     app:layout_widthPercent="37%" 
     tools:text="Deficient" /> 

Um

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textInputLayout_soil_nitrogen" 
     android:layout_toEndOf="@id/textInputLayout_soil_nitrogen" 
     android:layout_toRightOf="@id/textInputLayout_soil_nitrogen" 
     tools:text="Deficient" /> 

Hoffe, es wird Ihnen helfen !!

+3

Nein, auf diese Weise die Grundlinie des Textview auf dem gleichen Niveau wie editText Linie (die lila in der obigen Abbildung) , was ich nicht will. ** Ich möchte die Grundlinien von beiden ausrichten. ** Ich denke, das ist nicht möglich, da sich die TextView in einem TextInputLayout befindet. Ich denke, ich muss mich damit begnügen, ein Top-Padding von 20dp hinzuzufügen. Ich hoffe, dass hier jemand weiß, wie man das erreicht. Danke für deine Antwort. Guten Tag Ihnen. :) –

+0

ok bedeutet, dass Sie die gleiche untere Grundlinie von Editiertext und Textansicht mit Basis auf Text wollen. Ich denke, dafür müssen Sie die gleiche Schriftgröße definieren und auch die Textansicht unten auffüllen. Es funktioniert. –

+0

Yep, geben Padding ist der einzige Weg, um dies möglich zu machen es scheint. –

1

Check this image for verification

Bitte versuchen Sie folgenden Code

<android.support.design.widget.TextInputLayout 
    android:id="@+id/textInputLayout_soil_nitrogen" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    app:layout_widthPercent="63%"> 

    <EditText 
     android:id="@+id/editText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="Enter N of soil" 
     tools:text="10000" /> 

</android.support.design.widget.TextInputLayout> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/textInputLayout_soil_nitrogen" 
    android:layout_toEndOf="@id/textInputLayout_soil_nitrogen" 
    android:layout_toRightOf="@id/textInputLayout_soil_nitrogen" 
    android:gravity="bottom|start" 
    android:padding="8dp" 
    android:text="Deficient" 
    android:textColor="@android:color/black" 
    app:layout_widthPercent="37%" /> 

4

alte Frage, aber hier ist meine Lösung.

Im Wesentlichen die TextInputLayout bietet keinen Basiswert für seine Eltern. Wir müssen die korrekte Basislinie des EditText durch Verlängerung TextInputLayout pipen. Das funktioniert für mich, aber ich bin mir nicht sicher, ob sich die Baseline aufgrund anderer Ereignisse von TextInputLayout ändern würde.

public class CTextInputLayout extends TextInputLayout { 
    public CTextInputLayout(Context context) { 
     super(context); 
    } 

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

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

    @Override 
    public int getBaseline() 
    { 
     EditText editText = getEditText(); 
     return editText.getPaddingTop() + editText.getBaseline(); 
    } 
} 

Ich nehme an, PercentRelativeLayout unterstützt Baseline-Aligment. Andernfalls können Sie CTextInputLayout und TextView in eine RelativeLayout umwandeln, um eine Grundlinienanpassung zu erreichen.

0

Im Inneren des TextInputLayout, legen Sie ein RelativeLayout mit dem EditText und TextView als Kinder:

  <android.support.design.widget.TextInputLayout 
       android:id="@+id/textInputLayout_soil_nitrogen" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_alignParentTop="true" 
       android:layout_widthPercent="63%"> 

       <RelativeLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent"> 

        <EditText 
         android:id="@+id/edittext_soil_nitrogen" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:hint="Enter N of soil" 
         android:text="10000" /> 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_alignBaseline="@id/edittext_soil_nitrogen" 
         android:layout_alignParentRight="true" 
         android:layout_widthPercent="37%" 
         android:text="Deficient" /> 

       </RelativeLayout> 

      </android.support.design.widget.TextInputLayout>` 
Verwandte Themen