Я хотів би використовувати колір із шістнадцяткової рядки, наприклад, "#FFFF0000"
щоб (скажімо) змінити колір тла макета.
Color.HSVToColor
виглядає як переможець, але він бере float[]
параметр.
Я взагалі близький до рішення?
Я хотів би використовувати колір із шістнадцяткової рядки, наприклад, "#FFFF0000"
щоб (скажімо) змінити колір тла макета.
Color.HSVToColor
виглядає як переможець, але він бере float[]
параметр.
Я взагалі близький до рішення?
Відповіді:
Спробуйте Color
метод класу:
public static int parseColor (String colorString)
Підтримуються формати: #RRGGBB #AARRGGBB 'червоний', 'блакитний', 'зелений', 'чорний', 'білий', 'сірий', 'блакитний', 'пурпуровий', 'жовтий', 'lightgray', 'darkgray '
#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);
Зауважте, що рядок повинен починатися з а #
. Обидва RRGGBB
і AARRGGBB
формати підтримуються.
Ви дійсно повинні отримувати свої кольори з XML, коли це можливо. Це рекомендований варіант, оскільки це значно спрощує внесення змін у додаток до кольору. Якщо ви встановите багато шістнадцяткових кольорів у всьому своєму коді, це спробувати змінити їх пізніше.
Дизайн матеріалів Android має кольорові палітри з уже налаштованими шестигранними значеннями.
Ці кольори теми використовуються у вашій програмі та виглядають так:
кольори.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. Спершу назвіть шістнадцятковий колір значення, а потім назвіть компонент вашого додатка, який повинен отримати певний колір. Це дозволяє легко регулювати кольори пізніше. Знову ж таки, це у кольорах.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);
Клас «Колір» постачається з кількістю попередньо визначених кольорових констант. Ви можете використовувати його так.
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");
Я використовую це, і мені це чудово підходить для встановлення будь-якого кольору, який я хочу.
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 / color.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.