Граница (как тень) прочная и большая на TextView Android

Я использую этот «взлом». Я читал здесь, в stackoverflow.

@Override public void draw(Canvas canvas) { for (int i = 0; i < 20; i++) { super.draw(canvas); } } 

Но моя граница все еще смуглая, я хочу разместить большую и прочную рамку на всем моем TextView (у меня уже есть компонент, расширяющий текстовое представление).

У меня есть селектор в текстовом цвете, когда я нажимаю в этом тексте цвет текста, который нужно изменить. (Он уже работал, но я попытался применить другую альтернативу, используя canvas, в этой альтернативе я потерял этот сорт).

Введите описание изображения здесь

Эта страница решает вашу проблему, вы можете настроить стиль:

Как разместить рамку вокруг текстового вида Android?

Вы можете установить фигуру (прямоугольник) в качестве фона для представления.

 <TextView android:text="Some text" android:background="@drawable/back"/> 

И прямоугольник drawable back.xml (помещается в папку res / drawable):

  <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffffff" /> <stroke android:width="1dip" android:color="#4fa5d5"/> </shape> 

Вы можете использовать # 00000000 для сплошного цвета, чтобы иметь прозрачный фон. Вы также можете использовать отступы для разделения текста с границы. Для получения дополнительной информации см .: http://developer.android.com/guide/topics/resources/drawable-resource.html

Ваше текущее решение (хак) работает нормально, вам просто нужно настроить 2 параметра, чтобы получить лучший «теневой» эффект.

параметры

Первый параметр – это радиус тени TextView . Этот параметр определяет, как «широкий» эффект размытия (тени) будет распространяться за вашей буквой.

Второй параметр – это счетчик повтора цикла for, который обтекает метод onDraw(...) вашего TextView . Более высокий счетчик повторений даст вам более «твердую» тень, торгуя с производительности .

"Твердая" тень

Правило здесь: приращение радиуса тени (↑) всегда должно сопровождаться приращением на счетчике повтора (↑) для достижения «твердого» эффекта тени.

Аналогичным образом, если вы хотите повысить производительность за счет уменьшения счетчика повторения (↓) , вам также необходимо уменьшить радиус тени (↓) .

Твердая тень TextView

 package com.example.solidshadowtext; import android.content.Context; import android.graphics.Canvas; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.widget.TextView; public class SolidShadowTextView extends TextView { /** * Shadow radius, higher value increase the blur effect */ private static final float SHADOW_RADIUS = 10f; /** * Number of times a onDraw(...) call should repeat itself. * Higher value ends up in more solid shadow (but degrade in performance) * This value must be >= 1 */ private static final int REPEAT_COUNTER = 10000; // Shadow color private static final int SHADOW_COLOR = 0xff000000; public SolidShadowTextView(Context context) { super(context); init(); } public SolidShadowTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } @Override protected void onDraw(Canvas canvas) { for (int i = 0; i < REPEAT_COUNTER; i++) { super.onDraw(canvas); } } @Override public void setShadowLayer(float radius, float dx, float dy, int color) { // Disable public API to set shadow } private void init() { super.setShadowLayer(SHADOW_RADIUS, 0, 0, SHADOW_COLOR); } } 

Образец

Твердая тень TextView