Tôi muốn sử dụng màu từ chuỗi hexa, chẳng hạn như "#FFFF0000"
(nói) thay đổi màu nền của Bố cục.
Color.HSVToColor
trông giống như một người chiến thắng nhưng nó float[]
là một tham số.
Tôi có gần với giải pháp nào không?
Tôi muốn sử dụng màu từ chuỗi hexa, chẳng hạn như "#FFFF0000"
(nói) thay đổi màu nền của Bố cục.
Color.HSVToColor
trông giống như một người chiến thắng nhưng nó float[]
là một tham số.
Tôi có gần với giải pháp nào không?
Câu trả lời:
Hãy thử Color
phương pháp lớp:
public static int parseColor (String colorString)
Từ tài liệu Android :
Các định dạng được hỗ trợ là: #RRGGBB #AARRGGBB 'đỏ', 'xanh', 'xanh', 'đen', 'trắng', 'xám', 'lục lam', 'đỏ tươi', 'vàng', 'ánh sáng', 'bóng tối '
#000
các giá trị?
if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
, vui lòng sửa cho tôi nếu tôi sai
if(colorString.length() == 4 && colorString[0] == '#')
Thử:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Câu hỏi này đưa ra cho một số tìm kiếm liên quan đến màu hex nên tôi sẽ thêm một bản tóm tắt ở đây.
Màu hex có dạng RRGGBB
hoặc AARRGGBB
(alpha, đỏ, xanh lá cây, xanh dương). Theo kinh nghiệm của tôi, khi sử dụng int
trực tiếp, bạn cần sử dụng AARRGGBB
mẫu đầy đủ . Nếu bạn chỉ có RRGGBB
biểu mẫu thì chỉ cần thêm tiền tố FF
vào để làm cho alpha (trong suốt) mờ hoàn toàn. Đây là cách bạn sẽ đặt nó trong mã. Sử dụng 0x
lúc đầu có nghĩa là nó là thập lục phân và không phải là cơ sở 10.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Như những người khác đã lưu ý, bạn có thể sử dụng Color.parseString
như vậy
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Lưu ý rằng Chuỗi phải bắt đầu bằng a #
. Cả hai RRGGBB
và AARRGGBB
định dạng đều được hỗ trợ.
Bạn thực sự nên lấy màu của bạn từ XML bất cứ khi nào có thể. Đây là tùy chọn được đề xuất vì nó giúp việc thay đổi màu sắc cho ứng dụng của bạn dễ dàng hơn nhiều. Nếu bạn đặt nhiều màu lục trong suốt mã của mình thì đó là một nỗi đau lớn để cố gắng thay đổi chúng sau này.
Thiết kế vật liệu Android có vòm màu với các giá trị hex đã được cấu hình.
Những màu chủ đề này được sử dụng trong toàn bộ ứng dụng của bạn và trông như thế này:
màu sắc
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>
Nếu bạn cần thêm màu, một cách tốt để làm theo là xác định màu của bạn theo hai bước trong xml. Trước tiên, đặt tên màu giá trị hex và sau đó đặt tên cho một thành phần trong ứng dụng của bạn sẽ nhận được một màu nhất định. Điều này giúp bạn dễ dàng điều chỉnh màu sắc sau này. Một lần nữa, đây là trong colors.xml .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Sau đó, khi bạn muốn đặt màu trong mã, hãy làm như sau:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
Lớp Màu đi kèm với một số hằng số màu được xác định trước. Bạn có thể sử dụng nó như thế này.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Các màu khác là
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Chuyển đổi chuỗi đó thành một int
màu có thể được sử dụng trong setBackgroundColor
vàsetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
Số 16 có nghĩa là số thập lục phân và không phải là 0-9 thông thường của bạn. Kết quả phải giống như
int color = 0xFFFF0000;
#80000000
phiên bản int int color = 0x80000000;
. Nếu điều đó không hiệu quả thì hãy đăng một câu hỏi mới với nhiều chi tiết hơn để nhiều người hơn tôi sẽ chú ý đến nó. Hãy ghi nhớ #80000000
là một màu đen mờ.
nó là
int color = Color.parseColor("colorstring");
Tôi sử dụng nó và nó hoạt động rất tốt cho tôi để thiết lập bất kỳ màu nào tôi muốn.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Đặt màu bằng 0-255 cho mỗi màu đỏ, xanh lục và xanh lam sau đó bất cứ nơi nào bạn muốn màu đó được sử dụng chỉ cần đặt MY_COLOR thay vì Color.BLUE hoặc Color.RED hoặc bất kỳ màu tĩnh nào khác mà lớp Màu cung cấp.
Chỉ cần thực hiện tìm kiếm Google cho biểu đồ màu và bạn có thể tìm thấy biểu đồ có mã RGB chính xác bằng cách sử dụng 0-255.
Trong Xamarin Sử dụng cái này
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
Tệp XML được lưu tại res / value / colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
Mã ứng dụng này lấy tài nguyên màu:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Bố cục XML này áp dụng màu cho một thuộc tính:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Thay vào đó, hãy thử sử dụng 0xFFF000 và chuyển nó vào phương thức Color.HSVToColor.