IT story

TextInputLayout의 플로팅 레이블 색상을 변경하는 방법

hot-time 2020. 5. 11. 08:05
반응형

TextInputLayout의 플로팅 레이블 색상을 변경하는 방법


TextInputLayoutGoogle에서 출시 한 새로운 기능과 관련 하여 플로팅 라벨 텍스트 색상을 어떻게 변경합니까?

스타일 colorControlNormal에서 colorControlActivated, 설정 colorControlHighLight은 도움이되지 않습니다.

이것이 내가 지금 가진 것입니다.

이것이 내가 지금 가진 것입니다


정상적인 상태에서 작동하는 아래 코드를 사용해보십시오.

 <android.support.design.widget.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="@style/TextLabel">

     <android.support.v7.widget.AppCompatEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="Hiiiii"
         android:id="@+id/edit_id"/>

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

스타일 폴더 텍스트 레이블 코드

 <style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

앱의 주요 테마로 설정하면 상태 만 강조 표시됩니다.

 <item name="colorAccent">@color/Color Name</item>

최신 정보:

UnsupportedOperationException : api 16 이하에서 색상으로 변환 할 수 없음 : type = 0x2

해결책


<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/red</item>
    <item name="android:textSize">14sp</item>
</style>

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/gray"  //support 23.0.0
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" >

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint" />
</android.support.design.widget.TextInputLayout>

답을 찾았습니다. android.support.design:hintTextAppearance속성을 사용하여 자신의 플로팅 레이블 모양을 설정하십시오.

예:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:hintTextAppearance="@style/TextAppearance.AppCompat">

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/prompt_password"/>
</android.support.design.widget.TextInputLayout>

android:theme="@style/TextInputLayoutTheme"플로팅 레이블 색상을 변경하는 데 사용할 필요는 없습니다 . 레이블로 사용되는 작은 TextView의 전체 테마에 영향을 미치기 때문입니다. 대신 다음을 사용할 수 있습니다 app:hintTextAppearance="@style/TextInputLayout.HintText".

<style name="TextInputLayout.HintText">
  <item name="android:textColor">?attr/colorPrimary</item>
  <item name="android:textSize">@dimen/text_tiny_size</item>
  ...
</style>

솔루션이 작동하는지 알려주세요 :-)


자, 저는이 답변이 매우 도움이되고 기여한 모든 사람들에게 감사한다는 것을 알았습니다. 그래도 뭔가를 추가하십시오. 받아 들인 대답은 실제로 정답입니다 ...하지만 ... 내 경우에는 EditText위젯 아래에 오류 메시지를 구현하려고 했는데이 app:errorEnabled="true"한 줄로 인생이 어려워졌습니다. 이 옵션은에 android.support.design.widget.TextInputLayout의해 정의 된 다른 텍스트 색상을 가진 선택한 테마보다 우선합니다 android:textColorPrimary.

결국 나는 EditText위젯에 직접 텍스트 색상을 적용했습니다 . 내 코드는 다음과 같습니다

styles.xml

<item name="colorPrimary">@color/my_yellow</item>
<item name="colorPrimaryDark">@color/my_yellow_dark</item>
<item name="colorAccent">@color/my_yellow_dark</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@color/dark_gray</item>
<item name="android:windowBackground">@color/light_gray</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:textColorHint">@color/dark_gray</item>
<item name="android:colorControlNormal">@android:color/black</item>
<item name="android:colorControlActivated">@android:color/white</item>

그리고 내 위젯 :

<android.support.design.widget.TextInputLayout
        android:id="@+id/log_in_layout_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:errorEnabled="true">

        <EditText
            android:id="@+id/log_in_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/black"
            android:ems="10"
            android:hint="@string/log_in_name"
            android:inputType="textPersonName" />
</android.support.design.widget.TextInputLayout>

이제 textColorPrimary흰색 대신 검은 색 텍스트가 표시됩니다 .


TextInputLayout의 스타일 테마를 만들고 악센트 색상 만 변경하는 것이 좋습니다. 부모를 앱 기반 테마로 설정하십시오.

 <style name="MyTextInputLayout" parent="MyAppThemeBase">
     <item name="colorAccent">@color/colorPrimary</item>
 </style>

 <android.support.design.widget.TextInputLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:theme="@style/MyTextInputLayout">

최신 버전의 지원 라이브러리 (23.0.0+)에서는 TextInputLayout부동 레이블 색상을 편집하기 위해 XML에서 다음 속성을 사용합니다.android:textColorHint="@color/white"


Brahmam Yamani 답변 대신 Widget.Design.TextInputLayout을 부모로 사용하는 것을 선호합니다. 이렇게하면 모든 항목을 덮어 쓰지 않아도 모든 필수 항목이 표시됩니다. Yamanis 답변에서 setErrorEnabled (true)가 호출되면 앱이 해결할 수없는 리소스와 충돌합니다.

스타일을 다음과 같이 변경하십시오.

<style name="TextLabel" parent="Widget.Design.TextInputLayout">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

제 경우에는 app:hintTextAppearance="@color/colorPrimaryDark"TextInputLayout 위젯에 "" 추가했습니다 .


플로팅 레이블 텍스트 색상을 어떻게 변경합니까?

으로 재료 구성 요소 라이브러리 당신은 사용자 정의 할 수 있습니다 TextInputLayout(이것은 버전 1.1.0이 필요)를 사용하여 힌트 텍스트 색상을

  • 레이아웃에서 :

    • app:hintTextColor attribute : the color of the label when it is collapsed and the text field is active
    • android:textColorHint attribute: the color of the label in all other text field states (such as resting and disabled)
<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>
  • extending a material style Widget.MaterialComponents.TextInputLayout.*:
<style name="MyFilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="hintTextColor">@color/mycolor</item>
    <item name="android:textColorHint">@color/text_input_hint_selector</item>
</style>

여기에 이미지 설명을 입력하십시오여기에 이미지 설명을 입력하십시오

The default selector for android:textColorHint is:

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

To change color of hint and edit text underline color : colorControlActivated

To change character counter color : textColorSecondary

To change error message color : colorControlNormal

To change password visibility button tint : colorForeground

For more info on TextInputLayout read http://www.zoftino.com/android-textinputlayout-tutorial

<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorControlActivated">#e91e63</item>
    <item name="android:colorForeground">#33691e</item>
    <item name="colorControlNormal">#f57f17</item>
    <item name="android:textColorSecondary">#673ab7</item>
</style>

you should change your colour here

<style name="Base.Theme.DesignDemo" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#673AB7</item>
        <item name="colorPrimaryDark">#512DA8</item>
        <item name="colorAccent">#FF4081</item>
        <item name="android:windowBackground">@color/window_background</item>
    </style>

Now, simply using colorAccent and colorPrimary will work perfectly.


I solve the problem. This is Layout:

 <android.support.design.widget.TextInputLayout
           android:id="@+id/til_username"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/username"
           >

           <android.support.v7.widget.AppCompatEditText android:id="@+id/et_username"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:singleLine="true"
               />
       </android.support.design.widget.TextInputLayout>

This is Style:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>
<!-- Application theme. -->


 <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        <item name="colorAccent">@color/pink</item>
        <item name="colorControlNormal">@color/purple</item>
        <item name="colorControlActivated">@color/yellow</item>
    </style>

You should use your theme in application:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
</application>

초점을 맞출 때 텍스트 레이블의 색상을 변경합니다. 즉, 입력하십시오. 당신은 지정을 추가해야합니다

<item name="android:textColorPrimary">@color/yourcolorhere</item>

참고 사항 : 이러한 모든 구현을 기본 테마에 추가해야합니다.


저를 위해 일하고 있습니다 ..... TextInputLayout에 힌트 색상 추가

    <android.support.design.widget.TextInputLayout
        android:textColorHint="#ffffff"
        android:id="@+id/input_layout_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edtTextPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:hint="Password"
            android:inputType="textPassword"
            android:singleLine="true"
            />
    </android.support.design.widget.TextInputLayout>

android.support.design.widget.TextInputLayout에서 android : textColorHint를 사용해 보았습니다.

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/colorAccent">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Hello"
                android:imeActionLabel="Hello"
                android:imeOptions="actionUnspecified"
                android:maxLines="1"
                android:singleLine="true"/>

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

  <style name="AppTheme2" parent="AppTheme">
    <!-- Customize your theme here. -->
    <item name="colorControlNormal">#fff</item>
    <item name="colorControlActivated">#fff</item></style>    

이것을 스타일에 추가하고 TextInputLayout Theam을 App2로 설정하면 작동합니다.)


<com.google.android.material.textfield.TextInputLayout
    android:hint="Hint"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/TextInputLayoutHint">

    <androidx.appcompat.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:maxLines="1"
        android:paddingTop="@dimen/_5sdp"
        android:paddingBottom="@dimen/_5sdp"
        android:textColor="#000000"
        android:textColorHint="#959aa6" />

</com.google.android.material.textfield.TextInputLayout>

입술 / 값 /styles.xml

<style name="TextInputLayoutHint" parent="">
    <item name="android:textColorHint">#545454</item>
    <item name="colorControlActivated">#2dbc99</item>
    <item name="android:textSize">11sp</item>
</style>

참고 URL : https://stackoverflow.com/questions/30546430/how-to-change-the-floating-label-color-of-textinputlayout

반응형