2013-04-09 2 views
2

Короткий вопрос:Как установить переносимый текст TextView?

Пусть у меня есть TextView, и я хотел бы, чтобы сам (а не фон) текст будет иметь Drawable набора к нему (а не только сплошному цвету), как я должен это делать?

Единственное, что я нашел, это this one, но это только для градиентных цветов, и я хочу иметь возможность использовать любые чертежи.

ответ

0

отредактирован:

Я не считаю, что это можно изменить фактический ход, используемый в тексте, лучший вариант ближе всего вы, вероятно, является использование различных шрифтов.

В андроиде вы можете «нарисовать» любой текст, используя любой шрифт * .ttf.

для этого необходимо включить файл в папку вашего активов и вызвать из кода (может быть, есть способ, с помощью XML, но я не знаю, как) это:

TypeFace mFont = TypeFace.createFromAsset(mContext.getAssets(), "my_font.ttf"); 
mTextView.setTypeFace(mFont); 

Я считаю, что это закрывается вы получите другой штрих в тексте.

оригинальный ответ:

TextView обладают следующими свойствами:

Drawable Top 
Drawable Bottom 
Drawable Left 
Drawable Right 

, которые вы установили на XML. Или вы можете позвонить по телефону

setCompoundDrawables(left, top, right, bottom) 

из кода!

+0

Я считаю, что «разработчик Android» хотел спросить, что шрифт/штрихи для текста текстового изображения нужно сделать с помощью drawable. Ваше предложенное решение поместило бы рамки (-ы) вокруг текста, но не решило бы, что было предложено. – mastDrinkNimbuPani

+0

@mastDrinkNimbuPani Да, это правильно. Я не хочу, чтобы что-либо касалось ссылок на текст, текст должен быть тем, у кого есть возможность рисования. Это похоже на то, что текстуры настроены на текст.Одна хорошая вещь может быть градиентом, но я также хотел бы иметь возможность использовать изображения. –

+0

oohh ..... Я не правильно понял вопрос, чем. Я отредактирую ответ, пожалуйста, проверьте его. – Budius

2

Хорошо, я думаю, я нашел возможное решение, но у меня есть несколько замечаний по этому поводу:

  1. Это не для любого Drawable. Это для растрового изображения, поэтому вам нужно каким-то образом преобразовать его в растровое изображение.

  2. Это требует, чтобы вы знаете размер TextView (который вы можете использовать this для этой цели)

  3. Это требует, чтобы у вас достаточно памяти для масштабируемого битового массива, который находится в том же размере TextView ,

  4. Не знаете, как заставить его работать на каждого символа или по строке.

Вот код:

public static void setBitmapOnTextView(final TextView tv, final Bitmap bitmap) { 
    final TileMode tile_mode = TileMode.CLAMP; 
    final int height = tv.getHeight(); 
    final int width = tv.getWidth(); 
    final Bitmap temp = Bitmap.createScaledBitmap(bitmap, width, height, true); 
    final BitmapShader bitmapShader = new BitmapShader(temp, tile_mode, tile_mode); 
    tv.getPaint().setShader(bitmapShader); 
} 

Я надеюсь, что есть лучшее решение для этого.