Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Размер текста в TextView

#java #android


Здравствуйте! Хотелось бы узнать, как реализовать возможность того, чтобы в одной
строке TextView использовался обычный текст и "ЖИРНЫЙ" текст. Сейчас использую данный
способ:


    


в java- коде прописываю следующее:

    TextView text1 = (TextView)findViewById(R.id.1);
    en_text1.setText("123");
    TextView en_text2 = (TextView)findViewById(R.id.2);
    en_text2.setTypeface(null, Typeface.BOLD);
    en_text2.setText("456");


Если делать таким способом, то в первой строке будут обычные цифры 123, а в следующей
строке будут "жирные" цифры 456. Вопрос заключается лишь в том, как можно сделать (и
можно ли вообще) чтобы 123(простые) и 456(жирные) были на одной строке. Если говорить
по-другому, то как сделать так чтобы в обычном тексте можно было выборочно сделать
"жирные" слова и при этом не происходил переход на следующую строку?
    


Ответы

Ответ 1



Например так: TextView text1 = (TextView)findViewById(R.id.1); en_text1.setText(Html.fromHtml("" + "жирный" + "" + "" + "маленький" + ""));

Ответ 2



Можно так еще, через spannable SpannableStringBuilder sb = new SpannableStringBuilder("HELLOO"); final StyleSpan boldSpanStyle= new StyleSpan(android.graphics.Typeface.BOLD); final StyleSpan normalSpanStyle = new StyleSpan(Typeface.NORMAL); sb.setSpan(boldSpanStyle, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); sb.setSpan(normalSpanStyle, 4, 6, Spannable.SPAN_INCLUSIVE_INCLUSIVE); textView.setText(sb);

Ответ 3



Если вам необходимо условие на изменение стиля шрифта конкретного слова, то вот: (работает с любыми символами и цифрами) String text="Ваш текст"; Spannable span1 = new SpannableString(text); //основной (для вывода текста) Spannable span2 = new SpannableString(text); //изменяемый (нужен для цикла) String path="текст"; //слово которое необходимо изменить int startIndexOfPath = span2.toString().indexOf(path); //получаем начальный индекс слова в тексте while (startIndexOfPath!=-1) { //если есть совпадение по тексту, то выполняется цикл: span1.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), //меняем стиль слова на "жирный" startIndexOfPath, startIndexOfPath + path.length(), 0); StringBuilder sTextBuilder = new StringBuilder(span2); //создаем StringBuilder //заменяем найденное слово на любые другие символы в таком же кол-ве как само слово //например в слове текст 5 символов, поэтому меняем на 5 других символов //(нужно если в тексте несколько совпадений) sTextBuilder.replace(startIndexOfPath, startIndexOfPath + path.length(),"12345"); span2=new SpannableString(sTextBuilder); //присваиваем измененный текст startIndexOfPath = span2.toString().indexOf(path); //снова получаем начальный индекс слова в тексте } textView.setText(span1); //выводим в textView конечный результат Спасибо за внимание. Если ответ вам помог, то отметьте его как правильный.

Комментариев нет:

Отправить комментарий