2016-04-19 2 views
2

от this link of wikipedia Я получил код красного сердца и хочу показать в своем TextView для создания пользовательских эможи, но почему он всегда показывает черный insted красного цвета U + 2665, четко обозначенный красным в википедии. ниже мой кодКак изменить цвет символа юникода в TextView?

TextView tv=(TextView)findViewById(R.id.testText); 

// tv.setText(Html.fromHtml("\u2665")); 



tv.setText(Html.fromHtml("<font color='red'>"+"\u2665"+"</font>")); 

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

+0

Шрифт не имеет информации о цвете ... Они всегда в цветовом цвете – Selvin

+0

Я думаю, вам просто нужно изменить цвет текста: Html.fromHtml (" \ u2665") – Christopher

+0

http://stackoverflow.com/questions/28368856/how-to-convert-string-into-unicode-in-android/28369713#28369713 –

ответ

1

Чтобы сделать это КРАСНЫМ, вы должны установить его textColor RED. Как и таким образом ->

TextView tv=(TextView)findViewById(R.id.testText); 
tv.setText(Html.fromHtml("\u2665")); 
tv.setTextColor(Color.RED); // Set color here 
0

Преобразование ваш unicode в Hexadecimal & использовать его как это. tv.setText(Html.fromHtml("&#x2665;"));

Для получения дополнительной информации проверьте мои answer.

0

Также вы установите цвет в XML-файл в текстовом зрения как ..

<TextView 
      android:id="@+id/tv_id" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_margin="@dimen/margin_5" 
      android:textColor="@color/white" 
/> 

и в Java файл, чтобы установить текстовый пользовательский Emoji свою работу отлично.

+0

@ theUtrun не нужно менять unicode в шестнадцатеричный. –

2

Объяснение: TextView шрифт делает это как смайлик, что означает, что основно использует предопределенное изображение, поэтому цвет шрифта игнорируется на них. Существует символ юникода, который можно использовать в качестве суффикса, чтобы указать шрифту использовать текстовый вариант (VARIATION SELECTOR 15, «\ uFE0E», используйте вот так: «\ u2665 \ uFE0E»), но, судя по всему, Android игнорирует эти , по крайней мере, на моем телефоне (Samsung SM-G800F с 5.1.1)

Браузер и хром также не распознают селектор вариантов, в то время как Firefox для Android работает на моем телефоне.

Видимо это разные accross телефоны, как вы можете видеть в в related question on Stackexchange UX


Решение: Что решило проблему для меня, был вручную установить другой TTF шрифт в TextView, что опоры эти персонажи, но не emojis, а именно FreeSans из GNU FreeFont Project.

Скачайте шрифт и разместите его в src/assets/fonts. Затем установите шрифт вашего TextView:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/FreeSans.ttf"); 
    mTextView.setTypeface(type); 

Вы должны Propably загрузить Typeface в статическую константу, чтобы избежать воссоздавать его снова и снова.

+0

Этот шрифт не работает (по умолчанию Roboto) на моем S8 + с 7.0. Любые другие шрифты без эмози? –

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