Làm cách nào để thay đổi màu lấy nét (màu cam) trên hộp EditText? Các màu sắc tập trung là một vành nhỏ xung quanh toàn bộ kiểm soát và sáng màu cam khi điều khiển đã tập trung. Làm thế nào tôi có thể thay đổi màu sắc của rằng tập trung vào một màu khác nhau? Có ai giúp tôi trong việc phân loại vấn đề này không? Cảm ơn trước,cách thay đổi màu tiêu điểm của EditText trong Android
Trả lời
Bạn sẽ phải tạo/sửa đổi hình ảnh NinePatch của riêng mình để thay thế hình ảnh mặc định của NinePatch và sử dụng làm nền của EditText. Nếu bạn nhìn vào thư mục SDK của bạn, dưới nền tảng của bạn, sau đó res/drawable, bạn sẽ tìm thấy hình ảnh NinePatch cho trạng thái lấy nét EditText. Nếu đó là tất cả những gì bạn muốn thay đổi, bạn có thể kéo nó vào Photoshop, hoặc bất cứ phần mềm chỉnh sửa hình ảnh nào bạn có, và thay đổi màu cam thành màu bạn chọn. Sau đó lưu đó vào thư mục drawable của bạn, và xây dựng một StateListDrawable mới, ví dụ một cái gì đó giống như dưới đây:
edittext_modified_states.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:drawable="@android:drawable/edittext_pressed"
/> <!-- pressed -->
<item
android:state_focused="true"
android:drawable="@drawable/edittext_focused_blue"
/> <!-- focused -->
<item
android:drawable="@android:drawable/edittext_normal"
/> <!-- default -->
</selector>
tôi không biết ăn nói lấc cấc tên thực tế cho NinePatches mặc định cho EditText, vì vậy hãy thay thế chúng khi cần thiết, nhưng khóa ở đây là chỉ sử dụng các hình ảnh @android:drawable
cho những ảnh bạn chưa sửa đổi (hoặc bạn có thể sao chép chúng vào thư mục có thể vẽ của dự án), và sau đó sử dụng trạng thái tập trung của bạn.
Sau đó bạn có thể thiết lập StateListDrawable này như là nền tảng cho TextView của mình, như vậy:
<TextView
android:background="@drawable/edittext_modified_states"
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:color="colorcode"
/> <!-- pressed -->
<item
android:state_focused="true"
android:color="colorcode"
/> <!-- focused -->
<item
android:color="colorcode"
/> <!-- default -->
</selector>
mã này không hoạt động cho tôi thấy lỗi này "02-07 03: 45: 01.131: E/AndroidRuntime (2911): Gây ra bởi: org.xmlpull.v1.XmlPullParserException: Dòng tệp nhị phân XML # 8:
"
@andrewww tạo color.xml trong ' thư mục res/color' và thử 'android: color =" @ color/colorname "' –
Bạn không cần phải tạo drawables xml. Nó có thể đơn giản hơn trong mã. Ví dụ về kotlin:
editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
// colorLine, colorLineFocus is vars of ColorStateList
ViewCompat.setBackgroundTintList(editText, if (hasFocus) colorLineFocus else colorLine)
}
Giải pháp này hoạt động trên phiên bản Android nào? Tôi đã cố gắng để thay đổi màu sắc trong Android 2.1, nhưng có vẻ như rằng các tên và các tập tin xml là khác nhau trong nó. Tôi hiểu ý tưởng, nhưng sự thất vọng đang tăng lên khi tôi phải đối mặt với hàng tấn lỗi tất cả thời gian. – zaplec
Trong phiên bản 2.1, tôi cũng phải sao chép các ảnh trạng thái chưa sửa đổi thông thường vào thư mục drawable của ứng dụng để có được tác phẩm này. Vì vậy, trong các ứng dụng của tôi drawable thư mục tôi có hình ảnh trạng thái tập trung sửa đổi và cũng unmodified ban đầu khác hình ảnh nhà nước là tốt. Bây giờ nó hoạt động. – zaplec
Nó có thể không hoạt động, như tôi đã nói bạn có thể phải sao chép chúng vào thư mục của bạn (vì có vẻ như bạn đã làm); đây chỉ là một giải pháp từ đỉnh đầu tôi. :) – kcoppock