Lập trình bạn có thể sử dụng:
/* 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})
Giải thích:
Nhận giá trị màu int từ tài nguyên màu (một cách để trình bày màu rgb được sử dụng bởi Android). Tôi đã viết ColorEnables, nhưng thực sự nó nên, cho câu trả lời này, ColorHintExpanded & ColorViewCollapsed. Dù sao đây là màu bạn sẽ thấy khi gợi ý của chế độ xem "TextInputLayout" ở trạng thái Mở rộng hoặc Thu gọn; bạn sẽ thiết lập nó bằng cách sử dụng mảng tiếp theo trên hàm "setDefaultHintTextColor" của khung nhìn. Tham khảo:
Tham khảo cho TextInputLayout - tìm kiếm trong trang này phương thức "setDefaultHintTextColor" để biết thêm
Nhìn vào các tài liệu ở trên, bạn có thể thấy rằng các hàm thiết lập màu cho gợi ý Mở rộng & Thu gọn bằng cách sử dụng ColorStateList.
Tài liệu ColorStateList
Để tạo ColorStateList, trước tiên tôi tạo một ma trận với các trạng thái tôi muốn, trong trường hợp của tôi là state_enables & state_disables (trong đó, trong TextInputLayout, bằng với Hint Expanded và Hint Collapsed [Dù sao tôi cũng không nhớ nó theo thứ tự lol chỉ làm một bài kiểm tra]). Sau đó, tôi chuyển đến hàm tạo của ColorStateList các mảng có giá trị int của tài nguyên màu, các màu này có sự tương ứng với ma trận trạng thái (mọi phần tử trong mảng màu tương ứng với mảng tương ứng trong ma trận trạng thái ở cùng vị trí). Vì vậy, phần tử đầu tiên của mảng màu sẽ được sử dụng làm màu cho mọi trạng thái trong mảng đầu tiên của ma trận trạng thái (trong trường hợp của chúng tôi mảng chỉ có 1 phần tử: trạng thái được bật = trạng thái mở rộng gợi ý cho TextInputLayut). Trạng thái cuối cùng có giá trị dương / âm và bạn chỉ có các giá trị dương,
Hy vọng điều này là hữu ích. Tạm biệt có một mã hóa tốt đẹp (: