ฉันต้องการใช้สีจากสตริง hexa เช่น"#FFFF0000"
to (พูด) เปลี่ยนสีพื้นหลังของ Layout
Color.HSVToColor
ดูเหมือนว่าผู้ชนะ แต่มันจะfloat[]
เป็นพารามิเตอร์
ฉันใกล้จะแก้ปัญหาได้ไหม?
ฉันต้องการใช้สีจากสตริง hexa เช่น"#FFFF0000"
to (พูด) เปลี่ยนสีพื้นหลังของ Layout
Color.HSVToColor
ดูเหมือนว่าผู้ชนะ แต่มันจะfloat[]
เป็นพารามิเตอร์
ฉันใกล้จะแก้ปัญหาได้ไหม?
คำตอบ:
ลองColor
วิธีการเรียน:
public static int parseColor (String colorString)
จากเอกสาร Android :
รูปแบบที่รองรับคือ: #RRGGBB #AARRGGBB 'สีแดง', 'สีฟ้า', 'สีเขียว', 'สีเขียว', 'สีขาว', 'สีขาว', 'สีเทา', 'สีฟ้า', 'สีฟ้า', 'สีเหลือง', 'สีแสง' '
#000
ค่า?
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) }
โปรดแก้ไขฉันหากฉันผิด
if(colorString.length() == 4 && colorString[0] == '#')
ลอง:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
คำถามนี้เกิดขึ้นจากการค้นหาจำนวนหนึ่งที่เกี่ยวข้องกับสีหกเหลี่ยมดังนั้นฉันจะเพิ่มการสรุปที่นี่
สีฐานสิบหกใช้แบบฟอร์มRRGGBB
หรือAARRGGBB
(อัลฟา, แดง, เขียว, น้ำเงิน) จากประสบการณ์ของผมเมื่อใช้int
โดยตรงคุณจำเป็นต้องใช้เต็มAARRGGBB
รูปแบบ หากคุณมีRRGGBB
แบบฟอร์มเพียงให้ใส่คำนำหน้าด้วยFF
เพื่อทำให้ตัวอักษรทึบ (ทึบ) ทึบ นี่คือวิธีที่คุณจะตั้งค่าในรหัส การใช้0x
ที่จุดเริ่มต้นหมายความว่ามันเป็นเลขฐานสิบหกและไม่ใช่ฐาน 10
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
อย่างที่คนอื่นสังเกตคุณสามารถใช้Color.parseString
มันได้
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
โปรดทราบว่า String #
ต้องเริ่มต้นด้วย รองรับทั้งรูปแบบRRGGBB
และAARRGGBB
คุณควรได้รับสีของคุณจาก XML เมื่อทำได้ นี่คือตัวเลือกที่แนะนำเนื่องจากทำให้การเปลี่ยนสีในแอพของคุณง่ายขึ้น หากคุณตั้งค่าสีหกเหลี่ยมจำนวนมากตลอดทั้งรหัสของคุณมันเป็นความเจ็บปวดครั้งใหญ่ที่จะลองเปลี่ยนในภายหลัง
การออกแบบวัสดุ Android มีเพดานสีพร้อมค่าฐานสิบหกที่กำหนดค่าไว้แล้ว
สีของชุดรูปแบบเหล่านี้ถูกใช้ในแอพของคุณและมีลักษณะดังนี้:
colors.xml
<?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>
หากคุณต้องการสีเพิ่มเติมแนวทางปฏิบัติที่ดีที่ควรปฏิบัติคือการกำหนดสีของคุณในสองขั้นตอนเป็น xml ชื่อสีค่าฐานสิบหกจากนั้นตั้งชื่อองค์ประกอบของแอปของคุณที่ควรได้รับสีที่แน่นอน ทำให้ง่ายต่อการปรับสีในภายหลัง อีกครั้งนี้อยู่ในcolors.xml
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
จากนั้นเมื่อคุณต้องการตั้งค่าสีในรหัสให้ทำดังต่อไปนี้:
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
คลาส Color มาพร้อมกับค่าคงที่สีที่กำหนดไว้ล่วงหน้าจำนวนหนึ่ง คุณสามารถใช้มันได้เช่นนี้
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
สีอื่น ๆ
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
แปลงสตริงนั้นเป็นint
สีที่สามารถใช้ในsetBackgroundColor
และsetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16 หมายความว่ามันเป็นเลขฐานสิบหกไม่ใช่ 0-9 ปกติของคุณ ผลลัพธ์ควรตรงกับ
int color = 0xFFFF0000;
#80000000
ในกรณีที่รุ่น int int color = 0x80000000;
จะเป็น หากยังไม่ได้ผลให้โพสต์คำถามใหม่พร้อมรายละเอียดเพิ่มเติมเพื่อให้ผู้คนมากกว่าฉันจะสังเกตเห็น โปรดทราบว่า#80000000
เป็นสีดำโปร่งแสง
มัน
int color = Color.parseColor("colorstring");
ลองสิ่งนี้:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
ฉันใช้สิ่งนี้และมันใช้งานได้ดีสำหรับฉันในการตั้งค่าสีที่ฉันต้องการ
public static final int MY_COLOR = Color.rgb(255, 102, 153);
ตั้งค่าสีโดยใช้ 0-255 สำหรับแต่ละสีแดงสีเขียวและสีน้ำเงินจากนั้นทุกที่ที่คุณต้องการให้สีนั้นใส่ MY_COLOR แทน Color.BLUE หรือ Color.RED หรือสีคงที่อื่น ๆ ที่คลาส Color เสนอ
เพียงแค่ทำการค้นหาแผนภูมิสีของ Google และคุณสามารถค้นหาแผนภูมิด้วยรหัส RGB ที่ถูกต้องโดยใช้ 0-255
ใน Xamarin ใช้สิ่งนี้
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
บันทึกไฟล์ XML ไว้ที่ res / values / colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
รหัสแอปพลิเคชันนี้รับทรัพยากรสี:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
เค้าโครง XML นี้ใช้สีกับแอตทริบิวต์:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
ลองใช้ 0xFFF000 แทนและส่งผ่านไปยังวิธีการ Color.HSVToColor
หากคุณกำหนดสีใน XML ของคุณและต้องการใช้เพื่อเปลี่ยนสีพื้นหลังหรือสิ่งที่ API นี้เป็นสีที่คุณกำลังมองหา:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
ในตัวอย่างของฉันฉันใช้สำหรับ TestView
สำหรับรหัส Hex ที่สั้นลง
int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);