Tôi muốn thay đổi màu xanh bên dưới văn bản chỉnh sửa, tôi không biết nó thuộc tính gì.
Tôi đã thử sử dụng một màu nền khác cho nó nhưng nó không hoạt động.
Tôi đã đính kèm một hình ảnh bên dưới:
Tôi muốn thay đổi màu xanh bên dưới văn bản chỉnh sửa, tôi không biết nó thuộc tính gì.
Tôi đã thử sử dụng một màu nền khác cho nó nhưng nó không hoạt động.
Tôi đã đính kèm một hình ảnh bên dưới:
Câu trả lời:
Thực sự khá dễ dàng để đặt màu gạch dưới của một EditText theo chương trình (chỉ một dòng mã).
Để đặt màu:
editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
Để loại bỏ màu:
editText.getBackground().clearColorFilter();
Lưu ý: khi EditText có tiêu điểm , màu bạn đặt sẽ không có hiệu lực, thay vào đó, nó có màu tiêu điểm.
Tham chiếu API:
Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
Renderer
bạn ghi đè cái nào? Tôi đang cố gắng tìm cách làm cho điều này hoạt động cho thanh tìm kiếm.
SearchBarRenderer
là không phải là loại EditText
. Không thể làm cho nó hoạt động.
Sử dụng android:backgroundTint=""
trong EditText
bố cục xml của bạn .
Đối với api <21, bạn có thể sử dụng AppCompatEditText
từ thư viện hỗ trợ sau đóapp:backgroundTint=""
android:background="@null"
cho các thiết bị có api <21.
Bạn phải sử dụng hình nền khác, không phải màu, cho từng trạng thái của EditText
(tiêu điểm, đã bật, đã kích hoạt).
http://android-holo-colors.com/
Trong trang web trên, bạn có thể lấy hình ảnh từ rất nhiều thành phần trong chủ đề Holo. Chỉ cần chọn "EditText" và màu bạn muốn. Bạn có thể xem bản xem trước ở cuối trang.
Tải xuống tệp .zip và sao chép, dán các tài nguyên trong dự án của bạn (hình ảnh và XML).
nếu XML của bạn được đặt tên: apptheme_edit_text_holo_light.xml (hoặc cái gì đó tương tự):
Truy cập "styles.xml" XML của bạn và thêm EditText
kiểu tùy chỉnh :
<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>
Chỉ cần làm điều này trong EditText
:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/EditTextCustomHolo"/>
Và đó là nó, tôi hy vọng nó sẽ giúp bạn.
Điều này hoạt động tốt cho phiên bản Android cũ và mới (hoạt động tốt ngay cả trên API 10!).
Xác định phong cách này trong 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>
Và bây giờ trong XML của bạn, hãy đặt cái này làm chủ đề và kiểu ( kiểu để đặt textColor
và chủ đề để đặt tất cả những thứ khác):
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
style="@style/EditText.Login"
android:theme="@style/EditText.Login"/>
Giải pháp này gây ra lỗi giao diện người dùng nhỏ trên các phiên bản Android mới hơn (Lollipop hoặc Marshmallow trở đi) mà các nút điều khiển lựa chọn bị gạch chân.
Vấn đề này được thảo luận trong chủ đề này . (Tôi chưa thử giải pháp này cá nhân)
bạn có thể thay đổi Màu gạch dưới của EditText chỉ định nó trong styles.xml . Trong chủ đề ứng dụng styles.xml của bạn, hãy thêm phần sau.
<item name="android:textColorSecondary">@color/primary_text_color</item>
Như đã chỉ ra bởi ana trong phần bình luận
<item name="android:colorControlActivated">@color/black</item>
cài đặt này trong kiểu chủ đề hoạt động tốt để thay đổi màu của gạch dưới văn bản chỉnh sửa.
android:textColorSecondary
cũng được sử dụng để xác định màu của mũi tên quay lại và DrawerLayout
biểu tượng bánh hamburger trong ActionBar.
<item name="colorControlNormal">@color/edittext_underline_color</item>
thay vì textColorSecondary vì vấn đề màu thanh điều hướng.
Vì vậy, bạn cần tạo một tệp .xml mới trong thư mục có thể vẽ của mình.
Trong tệp đó, dán mã này:
<?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>
Và trong EditText của bạn, hãy đặt
android:background="@drawable/your_drawable"
Bạn có thể chơi với xml có thể vẽ của mình, đặt góc, đệm, v.v.
Trong kiểu ứng dụng của bạn, hãy xác định thuộc tính colorAccent . Ở đây bạn tìm thấy một ví dụ
<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>
Bạn có thể thay đổi màu của EditText theo chương trình chỉ bằng cách sử dụng dòng mã này một cách dễ dàng:
edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
Sử dụng mã dưới đây để thay đổi màu nền của đường viền của văn bản chỉnh sửa.
Tạo tệp XML mới dưới dạng có thể vẽ được.
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>
và thêm nó làm nền của văn bản chỉnh sửa của bạn
android:background="@drawable/abc"
Để thay đổi màu dòng dưới cùng, bạn có thể sử dụng màu này trong chủ đề ứng dụng của mình:
<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>
Để thay đổi màu nhãn nổi, hãy viết chủ đề sau:
<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>
và sử dụng chủ đề này trong bố cục của bạn:
<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>
Bạn có thể làm điều đó với AppCompatEditText và bộ chọn màu:
<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>
Nếu bạn không phải hỗ trợ các thiết bị có API <21, hãy sử dụng backgroundHint trong xml, ví dụ:
<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" />
Để được hỗ trợ và dự phòng tốt hơn, hãy sử dụng giải pháp @Akariuz. backgroundHint là giải pháp dễ dàng nhất, nhưng không tương thích ngược, dựa trên yêu cầu của bạn để thực hiện cuộc gọi.
Chỉ cần thay đổi android: backgroundTint trong mã xml thành màu của bạn