วิธีการเปลี่ยนสีของฉลากลอยตัวของ TextInputLayout


210

เมื่ออ้างอิงถึงTextInputLayoutGoogle ที่ออกใหม่ฉันจะเปลี่ยนสีข้อความฉลากลอยได้อย่างไร

การตั้งค่าcolorControlNormal, colorControlActivated, colorControlHighLightในรูปแบบที่ไม่ได้ช่วย

นี่คือสิ่งที่ฉันมีตอนนี้:

นี่คือสิ่งที่ฉันมีตอนนี้


8
คุณเปลี่ยนสีของเส้นเป็นสีแดงได้อย่างไร
Vlad

6
@ Vlad161 colorAccent
Kyle Horkley

@ Vlad161 สามารถอธิบายว่าคุณจะตั้งcolorAccentที่ไหน ฉันเปลี่ยนสไตล์ที่กำหนดเองcolorAccentเป็นสีดำและเส้นจะยังคงสะท้อนถึงสิ่งที่ฉันมีcolorControlNormalในสไตล์หลัก
ElliotM

2
พบตัวอย่างที่ดีที่นี่
Chintan Rathod

ตรวจสอบลิงค์ต่อไปนี้ มันตั้งค่าสีที่แตกต่างเพื่อบ่งบอกและขีดเส้นใต้สี: https://stackoverflow.com/a/45349177/3392323
SAndroidD

คำตอบ:


359

ลองใช้รหัสด้านล่างมันทำงานในสถานะปกติ

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

ในรหัสลักษณะโฟลเดอร์ TextLabel

 <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: ไม่สามารถแปลงเป็นสีได้: type = 0x2 ใน api 16 หรือต่ำกว่า

สารละลาย

ปรับปรุง:

คุณใช้ห้องสมุดวัสดุหรือไม่

คุณสามารถเพิ่มบรรทัดด้านล่างให้กับธีมหลักของคุณ

 <item name="colorPrimary">@color/your_color</item> // Activated State
 <item name="colorOnSurface">@color/your_color</item> // Normal State

หรือคุณต้องการสีที่แตกต่างในสถานะ noraml และสถานะที่เปิดใช้งานและด้วยการปรับแต่งตามรหัสด้านล่าง

<style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="materialThemeOverlay">@style/ThemeOverlay.App.TextInputLayout</item>
    <item name="shapeAppearance">@style/ShapeAppearance.App.SmallComponent</item> //Changes the Shape Apperance
    <!--<item name="hintTextColor">?attr/colorOnSurface</item>-->   //When you added this line it will applies only one color in normal and activate state i.e colorOnSurface color
</style>

<style name="ThemeOverlay.App.TextInputLayout" parent="">
    <item name="colorPrimary">@color/colorPrimaryDark</item>  //Activated color
    <item name="colorOnSurface">@color/colorPrimary</item>    //Normal color
    <item name="colorError">@color/colorPrimary</item>        //Error color

    //Text Appearance styles
    <item name="textAppearanceSubtitle1">@style/TextAppearance.App.Subtitle1</item>
    <item name="textAppearanceCaption">@style/TextAppearance.App.Caption</item>

    <!--Note: When setting a materialThemeOverlay on a custom TextInputLayout style, dont forget to set editTextStyle to either a @style/Widget.MaterialComponents.TextInputEditText.* style or to a custom one that inherits from that.
    The TextInputLayout styles set materialThemeOverlay that overrides editTextStyle with the specific TextInputEditText style needed. Therefore, you dont need to specify a style tag on the edit text.-->
    <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
</style>

<style name="TextAppearance.App.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
    <item name="fontFamily">@font/your_font</item>
    <item name="android:fontFamily">@font/your_font</item>
</style>

<style name="TextAppearance.App.Caption" parent="TextAppearance.MaterialComponents.Caption">
    <item name="fontFamily">@font/your_font</item>
    <item name="android:fontFamily">@font/your_font</item>
</style>

<style name="ShapeAppearance.App.SmallComponent" parent="ShapeAppearance.MaterialComponents.SmallComponent">
    <item name="cornerFamily">cut</item>
    <item name="cornerSize">4dp</item>
</style>

เพิ่มบรรทัดด้านล่างให้กับธีมหลักของคุณหรือคุณสามารถกำหนดรูปแบบเป็น textinputlayout ใน xml ของคุณ

<item name="textInputStyle">@style/Widget.App.TextInputLayout</item>

6
ว้าวฉันทำงานนี้มาประมาณหนึ่งสัปดาห์แล้ว - ฉันกลับมาที่คำถามนี้หลายครั้งคุณแค่ตอบคำถามทั้งหมดที่ฉันเคยมี
ElliotM

40
แอป chrashed เมื่อคุณตั้งข้อผิดพลาดใน TextInputLayout หรือ underlaying มุมมอง EditText:android.view.InflateException: Error inflating class TextView
Arvis

18
ระวังการตั้งค่าandroid:themeสไตล์นี้กับTextInputLayoutผลลัพธ์ในInflateExceptionแฮงค์บน ASUS Zenphones (และอุปกรณ์อื่น ๆ )
friederbluemle

13
สวัสดี nj ขออภัยที่ฉันไม่ทราบว่าทำไมมันเกิดขึ้น แต่ฉันเปลี่ยน TextAppearance.AppCompat เป็น ThemeOverlay.AppCompat.Light มันทำงานได้ดีแม้ใช้ข้อผิดพลาดที่กำหนดเป็น
textinputlayout

11
การตั้งค่าพาเรนต์เพื่อThemeOverlay.AppCompat.Lightช่วยแก้ไขการทำงานล้มเหลวบน ASUS Zenphone ของฉัน (@friederbluemle)
Lukasz Wiktor

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

16
นี่เป็นเช่นเดียวกับคำตอบที่ยอมรับยกเว้นความหมายที่ทำให้เข้าใจผิดที่คุณต้องใช้ AppCompatEditText AppCompatActivity จะใช้ AppCompatEditText สำหรับอินสแตนซ์ EditText โดยอัตโนมัติคุณไม่จำเป็นต้องใช้มันเป็นพิเศษ
Niall

4
บรรทัดแรกของรหัสด้านบนหลังจาก "<style name" มีการสะกดคำผิด ฉันเชื่อว่า "... TextAppearence ... " ควรเป็น "... TextAppearance ... "
AJW

android:textColorHint="@color/gray" //support 23.0.0ทำให้สีข้อความคำใบ้ของฉันสามารถมองเห็นได้ (สีข้อความคำใบ้เป็นสีดำโดยค่าเริ่มต้นโดยไม่คำนึงถึงสีข้อความคำใบ้ที่ฉันตั้งไว้และหากพื้นหลังเป็นสีดำข้อความจะถูกซ่อนอย่างสมบูรณ์
Rajaraman

70

พบคำตอบให้ใช้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>

นิเมชั่นเรียบเนียนที่ดี ขอบคุณ
Joaquin Iurchuk

Namespace 'android.support.design' not boundฉันได้รับ ข้อเสนอแนะใด ๆ
Sunkas

@Sunkas เพิ่มcompile 'com.android.support:design:23.1.1'ไฟล์ gradle แอปของคุณ
Ahmed Mostafa

24

คุณไม่จำเป็นต้องใช้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>

แจ้งให้เราทราบหากวิธีแก้ปัญหาใช้งานได้ :-)


22

ฉันจะเปลี่ยนสีข้อความฉลากลอยได้อย่างไร

ด้วยไลบรารี Material Componentsคุณสามารถปรับแต่งTextInputLayoutสีข้อความคำใบ้โดยใช้ (ต้องใช้เวอร์ชัน 1.1.0)

  • ในรูปแบบ:

    • app:hintTextColor คุณลักษณะ: สีของฉลากเมื่อมันถูกยุบและฟิลด์ข้อความใช้งานอยู่
    • android:textColorHint คุณลักษณะ: สีของฉลากในสถานะฟิลด์ข้อความอื่น ๆ ทั้งหมด (เช่นการพักผ่อนและปิดการใช้งาน)
<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>
<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>

ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่

ตัวเลือกเริ่มต้นสำหรับ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>


4

ตกลงดังนั้นฉันพบคำตอบนี้มีประโยชน์มากและขอขอบคุณทุกคนที่มีส่วนร่วม เพียงเพิ่มบางสิ่งบางอย่าง คำตอบที่ยอมรับนั้นเป็นคำตอบที่ถูกต้อง ... แต่ในกรณีของฉันฉันต้องการใช้ข้อความแสดงข้อผิดพลาดด้านล่างEditTextวิดเจ็ตด้วยapp:errorEnabled="true"และบรรทัดเดียวนี้ทำให้ชีวิตของฉันลำบาก ดูเหมือนว่านี้แทนที่รูปแบบที่ผมเลือกสำหรับซึ่งมีสีของตัวอักษรที่แตกต่างกันที่กำหนดโดยandroid.support.design.widget.TextInputLayoutandroid: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สีขาว


3

ฉันขอแนะนำให้คุณสร้างชุดรูปแบบสไตล์สำหรับ 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">

2

ในไลบรารีสนับสนุนรุ่นล่าสุด (23.0.0+) TextInputLayoutใช้แอตทริบิวต์ต่อไปนี้ใน XML เพื่อแก้ไขสีป้ายกำกับลอย:android:textColorHint="@color/white"


2

แทนที่จะตอบ 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>

1
ทำงานได้ดีบน Android 4.3 และ 7 ไม่มีข้อผิดพลาดเมื่อใช้ EditText.setError ()
Saul_programa

2

ในกรณีของฉันฉันเพิ่มนี้ " app:hintTextAppearance="@color/colorPrimaryDark"ในเครื่องมือ TextInputLayout ของฉัน


สิ่งนี้ใช้ไม่ได้ error: '#FFFFFF' is incompatible with attribute hintTextAppearance
Taslim Oseni

1

ในการเปลี่ยนสีของคำใบ้และแก้ไขข้อความขีดเส้นใต้สี: colorControlActivated

วิธีเปลี่ยนสีตัวนับของตัวอักษร: textColorSecondary

ในการเปลี่ยนสีข้อความแสดงข้อผิดพลาด: colorControlNormal

วิธีเปลี่ยนปุ่มมองเห็นรหัสผ่านเป็นสี: colorForeground

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ TextInputLayout อ่าน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>

1

โดยทางโปรแกรมคุณสามารถใช้:

/* Here you get int representation of an HTML color resources */
int yourColorWhenEnabled = ContextCompat.getColor(getContext(), R.color.your_color_enabled);
int yourColorWhenDisabled = ContextCompat.getColor(getContext(), R.color.your_color_disabled);

/* Here you get matrix of states, I suppose it is a matrix because using a matrix you can set the same color (you have an array of colors) for different states in the same array */
int[][] states = new int[][]{new int[]{android.R.attr.state_enabled}, new int[]{-android.R.attr.state_enabled}};

/* You pass a ColorStateList instance to "setDefaultHintTextColor" method, remember that you have a matrix for the states of the view and an array for the colors. So the color in position "colors[0x0]" will be used for every states inside the array in the same position inside the matrix "states", so in the array "states[0x0]". So you have "colors[pos] -> states[pos]", or "colors[pos] -> color used for every states inside the array of view states -> states[pos] */
myTextInputLayout.setDefaultHintTextColor(new ColorStateList(states, new int[]{yourColorWhenEnabled, yourColorWhenDisabled})

ชี้แจง:

รับค่า int color จากแหล่งข้อมูลสี (วิธีการนำเสนอสี rgb ที่ใช้โดย android) ฉันเขียน ColorEnabled แต่จริงๆแล้วมันควรจะเป็นสำหรับคำตอบนี้ ColorHint ขยายและ ColorViewCollapsed อย่างไรก็ตามนี่คือสีที่คุณจะเห็นเมื่อคำใบ้ของมุมมอง "TextInputLayout" อยู่ในสถานะ Expanded หรือ Collapsed คุณจะตั้งค่าโดยใช้อาเรย์ถัดไปในฟังก์ชั่น "setDefaultHintTextColor" ของมุมมอง การอ้างอิง: การอ้างอิงสำหรับ TextInputLayout - ค้นหาในหน้านี้ด้วยวิธีการ "setDefaultHintTextColor" สำหรับข้อมูลเพิ่มเติม

มองไปที่เอกสารข้างต้นคุณจะเห็นว่าฟังก์ชั่นตั้งค่าสีสำหรับคำแนะนำแบบขยายและยุบโดยใช้ ColorStateList

เอกสาร ColorStateList

ในการสร้าง ColorStateList ฉันสร้างเมทริกซ์ด้วยสถานะที่ฉันต้องการในกรณีของฉัน state_enabled & state_disabled (ซึ่งใน TextInputLayout มีค่าเท่ากับ Hint Expanded และ Hint Collapsed [ฉันจำไม่ได้ว่าคำสั่งใด lol แล้วฉันพบว่า แค่ทำแบบทดสอบ]) จากนั้นฉันจะส่งไปยังตัวสร้างของ ColorStateList อาร์เรย์ที่มีค่า int ของทรัพยากรสีสีเหล่านี้มีความสอดคล้องกับเมทริกซ์สถานะ (ทุกองค์ประกอบในอาร์เรย์สีสอดคล้องกับอาร์เรย์ที่เกี่ยวข้องในสถานะเมทริกซ์ที่ตำแหน่งเดียวกัน) ดังนั้นองค์ประกอบแรกของอาร์เรย์สีจะถูกใช้เป็นสีสำหรับทุกสถานะในอาร์เรย์แรกของเมทริกซ์สถานะ (ในกรณีของเราอาร์เรย์มีองค์ประกอบเพียง 1 องค์ประกอบเท่านั้น: สถานะเปิดใช้งาน = รัฐขยายคำใบ้สำหรับ TextInputLayut) สิ่งสุดท้ายที่รัฐมีค่าบวก / ลบและคุณมีเพียงค่าบวก

หวังว่านี่จะเป็นประโยชน์ บายมีการเข้ารหัสที่ดี (:


ชี้แจง? เหล่านี้เป็นเพียง 2 วิธี: / เอาล่ะฉันจะเพิ่มอย่างรวดเร็ว
Z3R0

เพียงสี่บรรทัดที่มีข้อความจำนวนมาก - เพียงอธิบายแนวคิดที่อยู่เบื้องหลังพวกเขาในเวลาสั้น ๆ และทุกคนมีเหตุผลที่ดีที่จะออกจากการโหวต :)
Nico Haase

1
เสร็จสิ้น;) หวังว่ามันจะถูกต้องและเป็นประโยชน์ ขอให้มีการเข้ารหัสที่ดี: D
Z3R0

0

คุณควรเปลี่ยนสีของคุณที่นี่

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

0

ตอนนี้เพียงแค่ใช้colorAccentและcolorPrimaryจะทำงานได้อย่างสมบูรณ์


4
สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม หากต้องการวิจารณ์หรือขอคำชี้แจงจากผู้แต่งโปรดแสดงความคิดเห็นใต้โพสต์ของพวกเขา
Swati

2
@Swati นี่คือคำตอบสำหรับคำถาม ฉันบอกให้เขาใช้ colorAccent และ colorPrimary
Kyle Horkley

6
มันเป็นความคิดเห็นที่มากกว่า คุณอาจมีจุดถ้าคุณเพิ่มรหัสตัวอย่าง
Sufian

จริง ๆ แล้ว TextInputLayout ใช้colorPrimaryธีมในการตั้งค่าคำใบ้และสีที่เน้นของบรรทัดล่าง แม้ว่าจะมีคำอธิบาย / รหัสเพื่อแสดงไว้ในคำตอบนี้จริงๆ
Kirill Starostin

0

ฉันแก้ปัญหา นี่คือเลย์เอาต์:

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

นี่คือสไตล์:

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

คุณควรใช้ชุดรูปแบบของคุณในใบสมัคร:

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

0

เพื่อเปลี่ยนสีของป้ายข้อความเมื่อคุณมุ่งเน้นไปที่มัน คือพิมพ์ในนั้น คุณต้องเพิ่มการระบุ

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

เพียงแค่ทราบ: คุณต้องเพิ่มการใช้งานเหล่านี้ทั้งหมดในธีมหลักของคุณ


0

มันใช้งานได้สำหรับฉัน ..... เพิ่มสีคำใบ้ใน 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>

0

ฉันลองใช้ android: textColorHint ใน android.support.design.widget.TextInputLayout มันใช้งานได้ดี

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

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

เพิ่มสิ่งนี้เข้ากับสไตล์และตั้งค่า TextInputLayout Theam เป็น App2 และใช้งานได้;)


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

0

สามารถใช้app:hintTextColorถ้าคุณใช้com.google.android.material.textfield.TextInputLayoutลองสิ่งนี้

 <com.google.android.material.textfield.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/app_name" 
     app:hintTextColor="@android:color/white">                   

     <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
 </com.google.android.material.textfield.TextInputLayout>

0

ลองใช้รหัสด้านล่างมันทำงานในสถานะปกติ

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

ในรหัสลักษณะโฟลเดอร์ TextLabel

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

0

จากเอกสาร:

ควรตั้งคำใบ้ไว้ที่ TextInputLayout แทนที่จะเป็น EditText หากมีการระบุคำใบ้ไว้บน EditText เด็กใน XML TextInputLayout อาจยังทำงานได้อย่างถูกต้อง TextInputLayout จะใช้คำใบ้ของ EditText เป็นป้ายกำกับลอย อย่างไรก็ตามการโทรในอนาคตเพื่อแก้ไขคำใบ้จะไม่อัปเดตคำแนะนำของ TextInputLayout เพื่อหลีกเลี่ยงพฤติกรรมที่ไม่ตั้งใจให้เรียก setHint (CharSequence) และ getHint () บน TextInputLayout แทนที่จะเป็น EditText

ดังนั้นฉันจึงตั้งandroid:hintและapp:hintTextColorเปิดTextInputLayoutไม่ได้TextInputEditTextใช้งานได้


0

เพราะคุณต้องเพิ่มcolorControlNormal, colorControlActivated, colorControlHighLightรายการกับรูปแบบการประยุกต์ใช้หลัก:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="colorControlActivated">@color/yellow_bright</item>
        <item name="colorControlNormal">@color/yellow_black</item>

    </style>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.