Любой способ установить тень текста для SpannableString? - PullRequest
3 голосов
/ 22 июня 2011

У меня есть виджет домашнего экрана Android с TextView на нем .. К сожалению, у меня есть некоторые проблемы с его стилем ..

Я хочу применить к тексту динамическую (изменяющуюся из кода) тень, и я не уверен, как это сделать. Я могу установить тень в макете, но если я хочу изменить ее в коде, нет способа сделать это за RemoteView!

Я думал, что смогу сделать это с SpannableString, но не могу найти ничего полезного. Если я использую TextAppearanceSpan, он будет игнорировать атрибуты тени из стиля. Кроме того, в тот момент, когда я начинаю использовать SpannableString на TextView, он начинает игнорировать тень, которую я применяю к TextView: (

Что не так с этим, и каков мой лучший способ действий здесь?

Ответы [ 2 ]

0 голосов
/ 14 января 2015

Отредактировано: это не будет работать на виджетах, так как там не могут использоваться пользовательские представления. Но это может быть полезно для кого-то, пытающегося установить его на удаленном экране в другом месте.

См. http://code.google.com/p/android/issues/detail?id=10029


Один из способов сделать это - создать собственный TextView с именем ShadowyTextView, с методом для каждого значения, которое я хочу установить.

Тогда нужно написать что-то вроде:

remoteViews.setInt (R.id.myShadowyText, "setShadowColor", someColor);

И поэтому атрибут задается отражением.

Возможно, не самое элегантное решение, но не смог найти ничего лучше.

0 голосов
/ 22 июня 2011

Попробуйте ввести следующий код

TextView textHello = (TextView)findViewById(R.id.hello);
        textHello.setShadowLayer(
          5f,   //float radius
          10f,  //float dx
          10f,  //float dy 
          0xFFffffff //int color
          );
...