TextInputLayout의 플로팅 레이블 색상을 변경하는 방법
TextInputLayout
Google에서 출시 한 새로운 기능과 관련 하여 플로팅 라벨 텍스트 색상을 어떻게 변경합니까?
스타일 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 activeandroid: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>
'IT story' 카테고리의 다른 글
두 SQL Server 데이터베이스 (스키마 및 데이터)를 비교하는 가장 좋은 도구는 무엇입니까? (0) | 2020.05.11 |
---|---|
Java ArrayList 사본 (0) | 2020.05.11 |
웹 사이트에서 현재 연도를 인쇄하는 가장 짧은 방법 (0) | 2020.05.11 |
선 사이의 Android TextView 패딩 (0) | 2020.05.11 |
C #을 사용하여 전체 파일을 문자열로 읽는 방법은 무엇입니까? (0) | 2020.05.11 |