2016-10-11 3 views
4

정렬 :기준선 내가 기준에 의해 회 전자 및 편집 텍스트를 정렬하려고 노력하지만, 그것이 작동하지 않습니다 TextInputLayout 및 회 전자

enter image description here

그것은 24.1.1에서 24.2로 업데이트 지원 라이브러리 의존성 이후에 발생할 시작합니다. 1 (지원 -v4, appcompat-v7, 디자인).

 <RelativeLayout 
      android:id="@+id/email_layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <android.support.v7.widget.AppCompatSpinner 
       android:id="@+id/spinner" 
       style="@style/MailSpinner" 
       android:layout_width="120dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:dropDownWidth="wrap_content" /> 
      <android.support.design.widget.TextInputLayout 
       android:id="@+id/text_input_layout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="8dp" 
       android:layout_alignBaseline="@id/spinner" 
       android:layout_toStartOf="@id/spinner" 
       android:baselineAlignedChildIndex="0"> 
       <android.support.v7.widget.AppCompatEditText 
        android:id="@+id/edit_text" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="E-mail" 
        android:ellipsize="end" 
        android:imeOptions="actionNext" 
        android:inputType="textEmailAddress" 
        android:textSize="16sp"/> 
      </android.support.design.widget.TextInputLayout> 


     </RelativeLayout> 

MailSpinner 스타일 : 그것의 부모에

<style name="MailSpinner" parent="Widget.AppCompat.Spinner.Underlined"> 
    <item name="android:background">@drawable/spinner_textfield_background</item> 
    <item name="backgroundTint">@color/spinner_tint</item> 
    <item name="backgroundTintMode">src_atop</item> 
</style> 
+0

, 당신의'spinner_textfield_background' 당김과'spinner_tint' 색상 자원을 추가하세요 부동 때이 버전이 더 나은 생각합니다. – Sevastyan

+0

@Sevastyan 더 이상이 코드에 액세스 할 수 없습니다. –

+0

그건 나쁘군요. 베이스 라인이 정렬되어 있지만,'Spinner'의 밑줄은'EditText'의 밑줄에 정렬되지 않습니다. – Sevastyan

답변

4

는 본질적으로 TextInputLayout가 기준 값을 제공하지 않는 이 내 XML 코드입니다. 을 확장하여 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(); 
    } 
} 
+0

감사합니다. – Eric

1

나는 힌트 레이블

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 getMeasuredHeight() - (editText.getMeasuredHeight() - editText.getBaseline()); 
} 
}