6

TextView "Deficient"のベースラインをEditText "10000"のベースラインに揃えたいとします。彼らは、私は次のことを試してみました<android.support.percent.PercentRelativeLayout>TextInputLayoutの中にラップされたTextViewでベースラインを整列する

enter image description here

の内側の両方であるが、それは仕事を得ることができません。

<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> 

のTextViewに20dpの上部パディングを与えることが一種のトリックを行いますが、代わりに、彼らのベースラインを揃えるために素敵でしたでしょう。この場合でも可能ですか?

textAppearance属性とid属性btwを削除しました。

答えて

1

<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" /> 

するコード

<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" /> 

の線の下に交換してください、それはあなたを助けることを願っています!

+3

それは私が望むものではありません。 **両方のベースラインを整列させたい** TextViewがTextInputLayoutの内部にあるので、これは不可能だと思う。 20dpの詰め物を追加するだけで解決しなければならないだろう。私はここで誰かがそれを達成する方法を知っていることを願っています。あなたの答えをありがとう。おはようございます。 :) –

+0

okは、edittextとtextviewのベースラインをテキストのベースラインと同じにしたいことを意味します。私はあなたが同じフォントサイズを定義し、テキストビューのボトムパッディングを与える必要があると思います。それは作品です。 –

+0

うん、これを可能にする唯一の方法はパディングを与えることです。 –

1

Check this image for verification

次のコード

<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

古い質問をしてみてくださいが、ここに私のソリューションですしてください。

本質的にTextInputLayoutは、その親にベースライン値を提供していません。 を拡張してEditTextの正しいベースラインをパイプする必要があります。しかし、これは私のために働きますが、TextInputLayoutの他のイベントのためにベースラインが変わるかどうかはわかりません。

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

私はPercentRelativeLayoutがベースラインアライメントをサポートしていると仮定しています。それ以外の場合は、RelativeLayoutの中にCTextInputLayoutTextViewを入れてベースラインアライメントを得ることができます。 TextInputLayoutインサイド

0

、子供としてEditTextTextViewRelativeLayoutを置く:いいえ、この方法は、TextViewののベースラインがEDITTEXTのライン(上の写真では紫1)と同じレベルにある

  <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>` 
関連する問題