ฉันต้องการเปลี่ยนสีน้ำเงินด้านล่างข้อความแก้ไขฉันไม่รู้ว่ามันคือคุณสมบัติอะไร
ฉันลองใช้สีพื้นหลังที่แตกต่างออกไป แต่มันไม่ได้ผล
ฉันแนบภาพด้านล่าง:
ฉันต้องการเปลี่ยนสีน้ำเงินด้านล่างข้อความแก้ไขฉันไม่รู้ว่ามันคือคุณสมบัติอะไร
ฉันลองใช้สีพื้นหลังที่แตกต่างออกไป แต่มันไม่ได้ผล
ฉันแนบภาพด้านล่าง:
คำตอบ:
จริงๆแล้วการตั้งค่าสีขีดเส้นใต้ของ EditText แบบเป็นโปรแกรมนั้นค่อนข้างง่าย (โค้ดเพียงบรรทัดเดียว)
ในการตั้งค่าสี:
editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
ในการลบสี:
editText.getBackground().clearColorFilter();
หมายเหตุ: เมื่อ EditText โฟกัสแล้วสีที่คุณตั้งไว้จะไม่มีผล แต่จะมีสีโฟกัสแทน
การอ้างอิง API:
Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
Renderer
คุณแทนที่? ฉันกำลังพยายามหาวิธีทำให้มันใช้งานได้กับแถบค้นหา
SearchBarRenderer
EditText
ไม่สามารถใช้งานได้
ใช้android:backgroundTint=""
ในEditText
เค้าโครง xml ของคุณ
สำหรับ api <21 คุณสามารถใช้AppCompatEditText
จากไลบรารีสนับสนุนได้app:backgroundTint=""
android:background="@null"
สำหรับอุปกรณ์ที่มี api <21
คุณต้องใช้ภาพพื้นหลังที่แตกต่างกันไม่ใช่สีสำหรับแต่ละสถานะของEditText
(โฟกัสเปิดใช้งาน)
http://android-holo-colors.com/
ในไซต์ด้านบนคุณจะได้รับรูปภาพจากส่วนประกอบมากมายในธีม Holo เพียงเลือก "EditText" และสีที่คุณต้องการ คุณสามารถดูตัวอย่างได้ที่ด้านล่างของหน้า
ดาวน์โหลดไฟล์. zip และคัดลอกวางทรัพยากรในโปรเจ็กต์ของคุณ (รูปภาพและ XML)
ถ้า XML ของคุณชื่อ: apptheme_edit_text_holo_light.xml (หรืออะไรที่คล้ายกัน):
ไปที่ XML ของคุณ "styles.xml" และเพิ่มEditText
สไตล์ที่กำหนดเอง:
<style name="EditTextCustomHolo" parent="android:Widget.EditText">
<item name="android:background">@drawable/apptheme_edit_text_holo_light</item>
<item name="android:textColor">#ffffff</item>
</style>
เพียงทำสิ่งนี้ในEditText
:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/EditTextCustomHolo"/>
และนั่นก็คือฉันหวังว่ามันจะช่วยคุณได้
ใช้งานได้ดีสำหรับ Android เวอร์ชันเก่าและเวอร์ชันใหม่ (ทำงานได้ดีแม้ใน API 10!)
กำหนดรูปแบบนี้ในstyles.xml
:
<style name="EditText.Login" parent="Widget.AppCompat.EditText">
<item name="android:textColor">@android:color/white</item>
<item name="android:textColorHint">@android:color/darker_gray</item>
<item name="colorAccent">@color/blue</item>
<item name="colorControlNormal">@color/blue</item>
<item name="colorControlActivated">@color/blue</item>
</style>
และตอนนี้ใน XML ของคุณตั้งค่านี้เป็นธีมและสไตล์ ( สไตล์ที่จะตั้งtextColor
และธีมเพื่อตั้งค่าสิ่งอื่น ๆ ทั้งหมด):
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
style="@style/EditText.Login"
android:theme="@style/EditText.Login"/>
โซลูชันนี้ทำให้ UI ผิดพลาดเล็กน้อยใน Android เวอร์ชันใหม่ ๆ (Lollipop หรือ Marshmallow เป็นต้นไป) ซึ่งการจัดการการเลือกจะถูกขีดเส้นใต้
ปัญหานี้จะกล่าวถึงในชุดข้อความนี้ (ฉันยังไม่ได้ลองวิธีนี้เป็นการส่วนตัว)
คุณสามารถเปลี่ยนขีดเส้นใต้ของEditTextสีที่ระบุไว้ในstyles.xml ในธีมของแอป styles.xml ให้เพิ่มสิ่งต่อไปนี้
<item name="android:textColorSecondary">@color/primary_text_color</item>
ตามที่ระบุไว้โดย ana ในส่วนความคิดเห็น
<item name="android:colorControlActivated">@color/black</item>
การตั้งค่านี้ในรูปแบบธีมใช้ได้ดีกับการเปลี่ยนสีของขีดเส้นใต้ข้อความแก้ไข
android:textColorSecondary
ใช้เพื่อกำหนดสีของลูกศรย้อนกลับและDrawerLayout
ไอคอนแฮมเบอร์เกอร์ใน ActionBar ด้วย
<item name="colorControlNormal">@color/edittext_underline_color</item>
แทน textColorSecondary เนื่องจากปัญหาสีของแถบนำทาง
ดังนั้นคุณต้องสร้างไฟล์. xml ใหม่ในโฟลเดอร์ที่วาดได้ของคุณ
ในไฟล์นั้นให้วางรหัสนี้:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="8dp"
android:left="-3dp"
android:right="-3dp"
android:top="-3dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/white"/>
</shape>
</item>
</layer-list>
และใน EditText ของคุณให้ตั้งค่า
android:background="@drawable/your_drawable"
คุณสามารถเล่นกับ xml ที่วาดได้ตั้งมุมพายเรือ ฯลฯ
ในรูปแบบของแอปกำหนดคุณสมบัติcolorAccent คุณจะพบตัวอย่างที่นี่
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/action_bar</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/action_bar</item>
</style>
คุณสามารถเปลี่ยนสีของ EditText ทางโปรแกรมได้โดยใช้โค้ดบรรทัดนี้ได้อย่างง่ายดาย:
edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
ใช้โค้ดด้านล่างเพื่อเปลี่ยนสีพื้นหลังของเส้นขอบของข้อความแก้ไข
สร้างไฟล์ XML ใหม่ภายใต้การวาดได้
abc.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#00000000" />
<stroke android:width="1dip" android:color="#ffffff" />
</shape>
และเพิ่มเป็นพื้นหลังของข้อความแก้ไขของคุณ
android:background="@drawable/abc"
หากต้องการเปลี่ยนสีเส้นด้านล่างคุณสามารถใช้สิ่งนี้ในธีมแอปของคุณ:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">#ffe100</item>
<item name="colorControlHighlight">#ffe100</item>
</style>
หากต้องการเปลี่ยนสีฉลากลอยให้เขียนธีมต่อไปนี้:
<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>
และใช้ธีมนี้ในเค้าโครงของคุณ:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">
<EditText
android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:capitalize="characters"
android:hint="User Name"
android:imeOptions="actionNext"
android:inputType="text"
android:singleLine="true"
android:textColor="@android:color/white" />
</android.support.design.widget.TextInputLayout>
คุณสามารถทำได้ด้วย AppCompatEditText และตัวเลือกสี:
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:backgroundTint="@color/selector_edittext_underline" />
selector_edittext_underline.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/focused_color"
android:state_focused="true" />
<item android:color="@color/hint_color" />
</selector>
หากคุณไม่ต้องรองรับอุปกรณ์ที่มี API <21 ให้ใช้ backgroundHint ใน xml ตัวอย่างเช่น:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="Task Name"
android:ems="10"
android:id="@+id/task_name"
android:layout_marginBottom="15dp"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textColorLink="@color/blue"
android:textColorHint="@color/blue"
android:backgroundTint="@color/lighter_blue" />
สำหรับการสนับสนุนและทางเลือกที่ดีขึ้นให้ใช้โซลูชัน @Akariuz backgroundHint เป็นวิธีแก้ปัญหาที่ไม่เจ็บปวดที่สุด แต่ไม่สามารถใช้งานร่วมกันได้แบบย้อนกลับขึ้นอยู่กับความต้องการของคุณโทรออก
เปลี่ยนcolorAccent
สีของคุณที่คุณต้องการชุดสีนั้นcolorAccent
และเรียกใช้คุณจะได้รับผลลัพธ์
เพียงแค่เปลี่ยน android: backgroundTint ในโค้ด xml เป็นสีของคุณ