2015-04-10 4 views
10

У меня возникает странная проблема, когда я устанавливаю фон TextView на @android:color/holo_blue_bright, ожидая, что он будет ярко-синим, только чтобы обнаружить, что это какой-то яркий зеленый на Устройство.Цвет голубого цвета выглядит зеленым на устройстве

XML

<TextView 
    android:id="@+id/tv_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:background="@drawable/chat_bubble" 
    android:maxWidth="300dp" 
    android:padding="5dp" 
    android:singleLine="false" 
    android:textSize="16sp" /> 

@ вытяжке/chat_bubble

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="@color/chat_bubble_background" /> 

    <corners android:radius="5dp" /> 
</shape> 

colors.xml (только соответствующая линия)

<color name="chat_bubble_background">@android:color/holo_blue_bright</color> 

Выше настройки производят это. Каждое сообщение является TextView

enter image description here

Я думал, может быть, потому, что мое устройство отображает цвета по-разному или что-то, так что я попробовал несколько более голо цвета, но все они выглядят точно так, как они должны

@ Android: цвет/holo_green_light дает

enter image description here

@android: цвет/holo_gre en_dark дает

enter image description here

Даже @android: цвет/holo_orange_light и @android: цвет/holo_purple исправны

enter image description here

enter image description here

за исключением синего :

@android: цвет/holo_blue_light дает

enter image description here

@android: цвет/holo_blue_dark дает

enter image description here

Все синее появляется как похож, но не точно такие же оттенки зеленого. Также не тот же оттенок зеленого цвета, как holo_green_light или holo_green_dark.

Я думал что это? Все выглядит хорошо, но не синее? и пошел проверить, что HEX holo_blue_bright есть, и я нашел его here (это #FF00DDFF).
Итак, я попытался использовать эти значения HEX напрямую, вместо того, чтобы использовать предопределенный холодный цвет.

enter image description here

Android студия (v1.2) говорит мне, что они точно такие же цвета, как я ожидал.

Однако, когда я потом изменил

<solid android:color="@color/chat_bubble_background" /> 

в

<solid android:color="@color/chat_bubble_background2" /> 

использовать #FF00DDFF как цвет, я получил эту

enter image description here

Какой именно то, что я ожидал см., когда я использовал holo_blue_bright! Это должно иметь смысл, учитывая, что они одного цвета.

Я в тупике. Что здесь происходит, чего мне не хватает? Почему 2, предположительно, одинаковые цветовые коды дают разные результаты, и почему все остальные холо-цвета выглядят нормально?


Информация об устройстве:

OnePlus Один
Модель A0001
Запуск Циан OS v11.0-XNPH05Q/ядро ​​3.4.0 CyanogenMod-gc73a4ec построить 04
Запуск Android 4.4.4

+0

Вау, и вы видите те же результаты на нескольких устройствах и версиях ОС? – CSmith

+0

К сожалению, у меня есть только одно устройство для тестирования, это Android 4.4.4 –

+0

Было бы интересно сделать getResources(). GetColor (android.R.color.holo_blue_bright); в коде и напечатать шестнадцатеричное значение, – CSmith

ответ

6

Шестнадцатеричный код для holo_blue_bright в стандартном Android 4.4.4 - ff00ddff (Source).

Зеленый цвет, который вы получаете, фактически равен user_icon_6, который описывается как «светло-зеленый 500» (Source).

Похоже, что изготовитель вашего устройства настроил цветовую палитру, заменив значения по умолчанию другими цветами (намеренно или нет). Это означает, что holo_blue_bright определяется как это в настраиваемой Android версии:

<color name="holo_blue_bright">#ff8bc34a</color> 


Теперь, когда вы предоставили информацию об устройстве, я посмотрел the source of CM11. Определенный цвет ff00ddff, который является правильным. Однако OnePlus разрабатывает собственную версию Cyanogen OS, поэтому они могут изменить значения цветов. К сожалению, я не смог найти исходный код для CM11-XNPH05Q, поэтому я могу только догадываться.

Предлагаю вам обратиться к OnePlus непосредственно по этой проблеме.

+0

Интересно. OnePlus выпускает Cyanogen 12 на сегодняшний день, это может быть просто исправлено с этим, верно? –

+0

@TimCastelijns Я бы подождал обновления и снова проверил проблему. Возможно, они исправили ошибку (если она не преднамеренная), иначе вы можете связаться с ними о проблеме. – Manu

+1

Вы были правы. Это индивидуальное переопределение в теме Lush цианогена. Я все еще видел это после того, как я обновился до cyanogen 12, но когда я пробовал новые темы, я заметил, что цвет был ярко-синим для каждой темы, но не для Lush –

1

Ваш комментарий выше

@CSmith Это дает мне ff8bc34a, который выглядит как вид зеленого я вижу. Почему Android Studio скажет мне, что это ff00ddff?

довольно ясно, что производитель изменил цвет на устройстве. Android Studio дает вам значение цвета из официальных ресурсов Android в SDK.

Попробуйте приложение в эмуляторе, например. Nexus 5. Держу пари, цвет будет там правильный.

Смежные вопросы