TextinputLayout의 레이블 색상을 변경하고 android 텍스트 밑줄을 편집하는 방법 EditText내부 의 힌트 색상,

나는 안드로이드 디자인 라이브러리의 TextinputLayout. 그러나 EditText내부 의 힌트 색상, 레이블 색상 및 밑줄 색상을 사용자 정의 할 수 없습니다 TextinputLayout. 도와주세요.



답변

하단 라인 색상 변경 :

<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item>

자세한 내용은 이 스레드를 확인 하십시오 .

떠있을 때 힌트 색상 변경

<style name="MyHintStyle" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/main_color</item>
</style>

다음과 같이 사용하십시오.

<android.support.design.widget.TextInputLayout
    ...
    app:hintTextAppearance="@style/MyHintStyle">

부동 레이블이 아닌 경우 힌트 색상 변경 :

<android.support.design.widget.TextInputLayout
    ...
    app:hintTextAppearance="@style/MyHintStyle"
    android:textColorHint="#c1c2c4">

@AlbAtNf 덕분에


답변

Fedor Kazakov 및 기타 답변을 기반으로 기본 구성을 만들었습니다.

styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="Widget.Design.TextInputLayout" parent="AppTheme">
        <item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item>
        <item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item>
        <item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item>
        <item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item>
    </style>

    <style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint">
        <!-- Floating label appearance here -->
        <item name="android:textColor">@color/colorAccent</item>
        <item name="android:textSize">20sp</item>
    </style>

    <style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error">
        <!-- Error message appearance here -->
        <item name="android:textColor">#ff0000</item>
        <item name="android:textSize">20sp</item>
    </style>

</resources>

activity_layout.xml

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Text hint here"
        android:text="5,2" />

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

집중 :

초점없이 :

에러 메시지:


답변

으로 재료 구성 요소 라이브러리 당신은을 사용할 수 있습니다 com.google.android.material.textfield.TextInputLayout.

사용자 지정 스타일을 적용하여 색상을 변경할 수 있습니다.

힌트 색상을 변경하려면 다음 속성을 사용해야합니다.
hintTextColorandroid:textColorHint.

<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
    <!-- The color of the label when it is collapsed and the text field is active -->
    <item name="hintTextColor">?attr/colorPrimary</item>

    <!-- The color of the label in all other text field states (such as resting and disabled) -->
    <item name="android:textColorHint">@color/selector_hint_text_color</item>
</style>

에 대한 선택기를 사용해야합니다 android:textColorHint. 다음과 같은 것 :

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>

하단 라인 색상을 변경하려면 속성을 사용해야합니다 : boxStrokeColor.

<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
    ....
    <item name="boxStrokeColor">@color/selector_stroke_color</item>
</style>

또한이 경우 선택기를 사용해야합니다. 다음과 같은 것 :

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_focused="true"/>
  <item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>

레이아웃에 다음 속성을 적용 할 수도 있습니다.

<com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
    app:boxStrokeColor="@color/selector_stroke_color"
    app:hintTextColor="?attr/colorPrimary"
    android:textColorHint="@color/selector_hint_text_color"
    ...>

답변

이 속성을 Edittext 태그에 추가하고 즐기십시오.

 android:backgroundTint="@color/colorWhite"

답변

블로그 포스트 의 다양한 스타일링 측면에 대해 설명 EditText하고 AutoCompleteTextView래핑을 TextInputLayout.

들어 EditText22.1.0+ lib에는 APPCOMPAT 일부 테마 관련 설정과 테마 속성을 설정할 수 있습니다 :

<style name="StyledTilEditTextTheme">
   <item name="android:imeOptions">actionNext</item>
   <item name="android:singleLine">true</item>
   <item name="colorControlNormal">@color/greyLight</item>
   <item name="colorControlActivated">@color/blue</item>
   <item name="android:textColorPrimary">@color/blue</item>
   <item name="android:textSize">@dimen/styledtil_edit_text_size</item>
</style>

<style name="StyledTilEditText">
    <item name="android:theme">@style/StyledTilEditTextTheme</item>
    <item name="android:paddingTop">4dp</item>
</style>

에 적용하십시오 EditText:

<EditText
    android:id="@+id/etEditText"
    style="@style/StyledTilEditText"

들어 AutoCompleteTextView가지 더 그것을 포장하기 때문에 복잡 TextInputLayout하고 라벨 동작을 부동이 주제 바꿈을 적용. 코드에서이 문제를 해결해야합니다.

private void setStyleForTextForAutoComplete(int color) {
    Drawable wrappedDrawable =     DrawableCompat.wrap(autoCompleteTextView.getBackground());
    DrawableCompat.setTint(wrappedDrawable, color);
    autoCompleteTextView.setBackgroundDrawable(wrappedDrawable);
}

그리고 Activity.onCreate:

setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> {
    if(hasFocus) {
        setStyleForTextForAutoComplete(getResources().getColor(R.color.blue));
    } else {
        if(autoCompleteTextView.getText().length() == 0) {
              setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
        }
    }
});

답변

당신이 변경하려는 경우 바 / 선 색상과 힌트 텍스트 색상 의을 TextInputLayout(악센트 색상은 일반적으로 무엇인지), 다음 그냥이 스타일을 만들 :

<style name="MyStyle">
    <item name="colorAccent">@color/your_color</item>
</style>

그런 다음 테마TextInputLayout 로 적용하십시오 .

<android.support.design.widget.TextInputLayout
    ...
    app:theme="@style/MyStyle" />

이것은 기본적으로 테마 (스타일이 아님)를 하나의보기로 설정합니다 (전체 활동이 아니라).


답변

<style name="Widget.Design.TextInputLayout" parent="android:Widget">
    <item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item>
    <item name="errorTextAppearance">@style/TextAppearance.Design.Error</item>
</style>

레이아웃에 대해이 스타일을 재정의 할 수 있습니다.

또한 내부 EditText 항목 스타일도 변경할 수 있습니다.