2011-12-30 33 views
13

Lập trình Android đang khiến tôi phát điên. XML hoặc các cách lập trình để phát triển GUI đang tạo ra một bữa ăn sáng cho chó cũ của mã - một số thứ ở đây, một số thứ ở đó.Các hằng số màu hệ thống Android

Nỗi thất vọng hiện tại của tôi là cố gắng giữ tất cả XML và tôi muốn đặt màu nền của TextView cùng màu với màu nền của Button mà không phải chỉ định mã màu chính xác. Tôi muốn sử dụng hằng số hệ thống, chẳng hạn như java.awt.SystemColor.control, nhưng được chỉ định bằng XML.

Có cách nào để thực hiện việc này mà không phải tuân thủ một loạt nội dung không? Tôi đang tìm một giải pháp như: android:background="{Insert constant here}".

Trả lời

17

Bạn nên có một tập tin trong res/values ​​gọi colors.xml, nó sẽ giống như thế này:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="white">#FFFFFF</color> 
    <color name="grey">#7A7A7A</color> 
    <color name="background">#0044AA</color> 
    <color name="bluelight">#449DEF</color> 
    <color name="bluedark">#2F6699</color> 
    <color name="greenlight">#70C656</color> 
    <color name="greendark">#53933F</color> 
    <color name="orangelight">#F3AE1B</color> 
    <color name="orangedark">#BB6008</color> 
    <color name="black">#000000</color> 
</resources> 

Sau đó, bạn chỉ có thể gọi cho màu sắc trong xml như thế này:

android:background="@color/greenlight" 
+3

Nhưng tôi không muốn chỉ định màu. Tôi muốn chỉ định kiểu hệ thống. – zam664

+1

Đây thường là cách ưu tiên để làm điều đó, vì không có nhiều màu được hệ thống xác định, tuy nhiên bạn có thể sử dụng android: background = "@ android: color/white". Bạn có thể tìm danh sách đầy đủ tại đây: http://developer.android.com/reference/android/R.color.html –

+0

Tôi có một hằng số màu cho ví dụ: 17170449 mà tôi cần chuyển đổi thành mã thập phân hexa. là nó có thể? Cảm ơn trước @MattHarris –

20

Bạn có thể sử dụng những thứ như "@ color/white" hoặc cho hằng số hệ thống android "@android: color/holo_red_light". Ngoài ra nếu bạn muốn kiểm soát nhiều hơn, bạn luôn có thể xác định một nền tảng chung trong một drawable và thiết lập nền để "@ drawable/mydrawable"

Danh sách các nguồn lực có sẵn cho android: màu ở đây (như background_dark): http://developer.android.com/reference/android/R.color.html

+1

Đây là vấn đề mà tôi đang gặp phải với Android. Tôi không muốn phải tự định nghĩa lại mọi thứ. Tôi muốn sử dụng các tiêu chuẩn trên hệ thống. Tôi không quan tâm những tiêu chuẩn đó là gì, tôi chỉ muốn có giao diện người dùng tương tự. – zam664

+0

Đó chính xác là lý do tại sao bạn nên sử dụng android: color/... có rất nhiều cài đặt trước hiện tại không có màu cụ thể và sẽ thay đổi dựa trên nhà sản xuất. câu trả lời cập nhật với liên kết –

+1

Chỉ cần thông báo, ví dụ của bạn không chính xác, không có "@android: color/red" –

1

sử dụng như thế này: android:background="#FF00FF"

2

kiểm tra trang này: http://android-er.blogspot.com/2010/03/using-color-in-android.html

bạn có thể sử dụng: "@android: màu/trắng" trong xml của bạn. Tôi tưởng tượng rằng một số màu sắc phổ biến khác được hỗ trợ, nhưng tôi không biết chắc chắn màu nào.

Giải pháp ưa thích thường là tạo tệp tài nguyên colors.xml của riêng bạn và tham khảo các tệp bạn đặt bên trong đó.

0

Bạn không cần phải sử dụng file xml để tạo ra XML một hằng,

nó có thể giúp bạn: Java constants file

+0

Tôi muốn làm điều đó trong XML chứ không phải Java. Tôi có thể nhận được các màu sắc thông qua lập trình Java nhưng ý định là sử dụng XML cho thiết kế GUI và có tất cả ở một vị trí. Tôi không muốn một nửa GUI của tôi trong XML và một nửa trong Java. – zam664

Các vấn đề liên quan