Подчеркните разных авторов в библиографии, взломав файл BST [дубликат]

Я обновляю свое резюме ( moderncv ) и включаю список всех моих сообщений (устных и постерных), используя multibib (я используйте разные файлы .bib для каждого из них).

В окончательном выводе мое имя должно быть выделено жирным шрифтом, а автор презентации подчеркнут.

Пока я понял, как сделать первую часть, но не нашел решения для последней части. Потому что автор презентации не всегда тот же человек, о котором я думал, используя «поле комментариев», чтобы сообщить BibTeX/LaTex, кто Я хочу подчеркнуть эту конкретную запись.

Поскольку у меня недостаточно навыков для этого, мне интересно, может ли кто-нибудь помочь мне.

EDITED

Я использую файл .bst.


Следуя предыдущему примеру, я смог ответить на свой вопрос, используя простой .bst .

Во-первых, я добавил поле comment в файл .bib, чтобы упростить ссылку, которая была спикером/ представляя автора и дек добавила это новое поле в файл plain.bst:

  ENTRY {... ... комментарий главы ...}  

Во-вторых, я создал новую функцию ( speaker.author ), чтобы установить имя в том же формате, что и этот стиль в format.names :

  FUNCTION {Speaker.author} {comment empty $ {""} {comment nameptr "{ff ~} {vv ~} {ll} {, jj}" формат.  name $} if $}  

В-третьих, создается новая функция ( highlight ) для выделения текста, в нашем случае имени. В этом случае я предпочитаю подчеркнуть текст/имя, но вы можете установить любой стиль текста, который хотите.

  FUNCTION {highlight} {duplicate $ empty $ {pop $ ""}  {" underline {" swap $ * "}" *} if $}  

В-четвертых, новая функция ( highlight.if.speaker.author ) создается для запуска highlight , если автор в стеке (см. далее) совпадает с speaker.author .

  FUNCTION {highlight.if.speaker.author} {duplicate $ purify $ Speaker.author purify $ = {highlight} 'пропустить $ if $}  

Наконец, вставьте вызов highlight.if.speaker.author в FUNCTION {format.names} сразу после format.names $ .

  FUNCTION {format.names} {... format.names $ highlight.if.speaker.author ...}  

ПРИМЕЧАНИЕ: шаги 2–4 следует поместить перед FUNCTION {format.names} . Единственный недостаток этого метода (который возникает из-за того, что стиль plain.bst не сокращает имена) заключается в том, что вы должны убедиться, что способ ввода имени автора в author такое же, как и в comment , потому что «Doe, John» и «Doe, J» будут отображаться как разные имена, хотя «Doe, J», » Доу, Дж. » или «J Doe» будет считаться равным.


EDITED

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

  FUNCTION {cv.author} {"Доу, Джон" nameptr "{vv ~} {ll} {, jj} {  , f {.}.} "format.name $} FUNCTION {double.highlight} {duplicate $ empty $ {pop $" "} {"  textbf { underline {"swap $ *"}} "*} if $  }  

Затем измените FUNCTION {highlight.if.speaker.author} на это:

  FUNCTION {highlight.if.speaker.author} {duplicate $ purify $ speaker.author purify $ = {speaker.author cv.author = {double.highlight} {highlight} if $} 'пропустить $ if $}   


Могу ли я подчеркнуть текст в макете Android?

Как определить подчеркнутый текст в файле макета Android xml ?


Этого можно добиться, если вы используете строковый ресурс xml, который поддерживает HTML-теги, такие как , и .

    Это  подчеркивание .   

Если вы хотите что-то подчеркнуть из кода, используйте:

  TextView textView = (TextView  ) view.findViewById (R.id.textview); SpannableString content = new SpannableString ("Content"); content.setSpan (новый UnderlineSpan (), 0, content.length (), 0); textView.setText (контент);   

555

Вы можете попробовать с

  textview.setPaintFlags (textview.getPaintFlags () |  Paint.UNDERLINE_TEXT_FLAG);  

Улучшите этот ответ
отредактировано 28 июня ’12 в 16:00
Гайкун
2,6812121 серебряный знак2727 бронзовых знаков
ответил 08 июня ’12 в 13: 442012-06-08 13:44
  • 3
    Может быть, мелочь, но OP хотел, чтобы это было определено в XML файл макета; в противном случае это отличное решение. — kwishnu 27 июля ’13, в 17:43
  • 4
    используйте это решение, если хотите его очистить — Бобс 17 августа 2013 в 9:19
  • 2
    это решение можно использовать и для кнопки — Руди Курниаван 16 мая 2016, 09:19
  • 3
    Будьте осторожны, если вы используете пользовательские шрифты или аналогичные, вам может потребоваться | Раскрасьте.ANTI_ALIAS_FLAG , иначе текст будет выглядеть очень четким. Это чаще всего проявляется в более низких API. — Мартин Маркончини, 23 февраля 2018, 20:53
  • 12
    В Kotlin: textView.paintFlags = textView.paintFlags или Paint.UNDERLINE_TEXT_FLAG — Альберт Вила Кальво 6 сентября ’19 в 12: 01
| показать 2 дополнительных комментария

Вы можете попробовать с

  textview.setPaintFlags (textview.getPaintFlags () | Paint.UNDERLINE_TEXT_FLAG);  

73

Вышеприведенный «принятый» ответ НЕ работает (когда вы пытаетесь использовать строку типа textView.setText (Html.fromHtml (String.format (getString (...), ...))) .

Как указано в документации, вы должны избегать открытия (закодированный объект html) скобка внутренних тегов с & lt; , например, результат должен выглядеть так:

    Это  является & lt; u & gt; подчеркиванием & lt;/u & gt ;.    

Затем в своем коде вы можете установить текст с помощью:

  TextView textView = (TextView) view.findViewById (R.id.textview); textView.setText (Html.fromHtml (String.format (getStrin  g (R.string.my_string), ...)));  

Улучшите этот ответ
отредактировано 4 февраля ’20 в 06:34
Ismail Shaikh
38522 серебряных знака1111 бронзовых знаков
ответил 31 марта ’12 в 10:22
  • 4
    подчеркнутый здесь работает отлично. & lt; u> подчеркивание & lt;/u> не сработало. Это для Android 2.2. Возможно, разные версии по-разному интерпретируют это. — user898763452 14 мая ’12 в 1:13
  • @autotravis, который предназначен для 2. 2? Я не тестировал его на более старых версиях, и будет очень прискорбно, если разные версии будут обрабатывать его по-разному … Также, по крайней мере, в текущей документации указано, что его нужно экранировать (ссылка в ответе). — Огнян 18 мая 2012, 8:07
  • Я тестировал подчеркнутый на Android 2.3, и он работает. & lt; u> подчеркивание & lt;/u> не работает в версии 2.3. В документации говорится: «Иногда вам может потребоваться создать текстовый ресурс со стилями, который также используется в качестве строки формата. Обычно это не сработает, потому что метод String.format (String, Object …) удалит всю информацию о стиле. из строки. Чтобы решить эту проблему, нужно написать HTML-теги с экранированными сущностями, которые затем восстанавливаются с помощью fromHtml (String) после того, как произойдет форматирование ». Итак, я думаю, вы бы использовали экранирование, если пропустили его через этот метод String.format (…). — user898763452 19 мая 2012, 19:07
  • @autotravis да, вы правы. Я использую его с String.format (…). Я отредактировал свой ответ, спасибо за отзыв. — Огнян, 22 мая 2012, в 14:08
  • В 2.3 и 4.1 (только те, которые я пробовал до сих пор) вы можете просто использовать textView.setText (getText (R.string.text)) вместо использования getString ( ), Html.fromHtml () и String.format (). — Рой Сольберг, 24 июл. ’12 в 7:50
добавить комментарий |

«Принятый» ответ выше НЕ работает (когда вы пытаетесь использовать строку типа textView.setText (Html.fromHtml (String.format (getString (...), ...))) .

Как указано в документации, вы должны escape (закодированный объект html) открывающая скобка внутренних тегов с помощью & lt; , например, результат должен выглядеть так:

    Это & lt; u & gt; подчеркивание & lt;/u & gt ;.    

Затем в коде вы можете установить текст с помощью :

  TextView textView = (TextView) view.findViewById (R.id.textview); textView.setText (Html.fromHtml (String.format (getString (R.string.  моя_строка), ...)));  

62

Содержимое файла Strings.xml:

    Это  подчеркивание .    

XML-файл макета должен использовать указанный выше строковый ресурс с указанными ниже свойствами textview, как показано ниже:

    

Улучшите этот ответ
отредактировано 15 ноября ’17 в 10:18
ZooMagic
49766 серебряных знаков1212 бронзовых знаков
ответил 11 апр. ’12 в 6:04
  • 3
    Убедитесь, что вы редактируете e файл строковых ресурсов внутри фактического XML, а не внутри пользовательского интерфейса вспомогательного редактирования в Eclipse, при этом он будет экранировать
    добавить комментарий |

Содержимое файла Strings.xml:

    Это  подчеркивание .    

XML-файл макета должен использовать указанный выше строковый ресурс с указанными ниже свойствами textview , как показано ниже:

    

57

Для Button и TextView это самый простой способ:

Button:

  Button button = (Кнопка) findViewById (R.id.btton1); button.setPaintFlags (button.getPaintFlags () | Paint.UNDERLINE_TEXT_FLAG);  

Textview:

  TextView textView = (TextView) findViewById (R.id.tex  tview1); textView.setPaintFlags (textView.getPaintFlags () |  Paint.UNDERLINE_TEXT_FLAG);  

Улучшите этот ответ
отредактировано 20 марта ’19 в 0:29
Offboard
2955 бронзовых значков
ответ дан 4 сен 2015 в 08:41
  • Очень элегантное решение. Спасибо! — Адриан, 27 мая 2020 г., 17:35
добавить комментарий |

Для кнопок и TextView это самый простой способ:

Button:

  Button button = (Button) findViewById (R.id.btton1); button.setPaintFlags  (button.getPaintFlags () | Paint.UNDERLINE_TEXT_FLAG);  

Textview:

  TextView textView = (TextView) findViewById (R  .id.textview1); textView.setPaintFlags (textView.getPaintFlags () | Paint.UNDERLINE_TEXT_FLAG);  

28

В Kotlin можно использовать функцию extension . Это можно использовать только из кода, но не из xml.

  забавный TextView.underline () {paintFlags = paintFlags или Pai  nt.UNDERLINE_TEXT_FLAG}  

Использование:

  tv_change_number.underline () tv_resend_otp.underline ()  

Улучшите этот ответ
отредактировано 8 октября ‘ 18, 13:20
Джемшит Искендеров
7,12955 золотых знаков4747 серебряных знаков9090 бронзовых знаков
ответил 16 августа 2018 в 11:36
добавить комментарий |

В Kotlin можно использовать функцию расширения . Это можно использовать только из кода, но не из xml.

  fun TextView.underline () {paintFlags = paintFlags или Paint.UNDERLINE_TEXT_FLAG}  

Использование:

  tv_change_number.underline () tv_resend_otp.underline ()  

21

Однострочное решение

myTextView.setText (Html.fromHtml ("

Я подчеркнут текст

"));

Это немного поздно, но может быть полезно для кого-то.

Улучшите этот ответ
ответил 17 марта ’15 в 17:46
добавить комментарий |

Однострочное решение

myTextView.setText (Html. fromHtml ("

Я подчеркнут текст

"));

Это немного поздно, но может быть полезно для кого-то.


15

Обратите внимание на стиль кнопки с подчеркиванием:

    

strings.xml:

    Добавить новый контакт     

Результат:

Улучшить этот ответ
отредактировал 29 августа ’17 в 8: 16
В.Я.
2,79533 золотых знака1818 серебряных знаков3838 бронзовых знаков
ответил 5 мая ’17 в 11:26
  • Внешний вид Widget.AppCompat.Button.Borderless.Colored намного лучше, чем подчеркивание, однако, как описал @Kiril Vashilo, вы все равно можете это сделать. — xarlymg89, 22 марта 2018, 12:16
  • 1
    Для этого принудительно вводится текст в верхнем регистре, образуется большая граница и становится больше, чем текст по умолчанию. — Джеффри Блаттман 09 июл.2020, 20:31
добавить комментарий |

Обратите внимание на стиль интерактивной кнопки с подчеркиванием:

    

strings.xml:

    Добавить новый контакт    

Результат:


11

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

Вот созданный мной класс:

  import android  .content.Context; import android.text.Editable; import android.text.SpannableString; import android.text.TextWatcher; import android.text.style.UnderlineSpan; import android.util.AttributeSet; import android.widget.TextView;/ ** * Создано с помощью IntelliJ IDEA.  * Пользователь: Джастин * Дата: 11.09.13 * Время: 1:10 */открытый класс UnderlineTextView расширяет TextView {частное логическое значение m_modifyingText = false;  общедоступный UnderlineTextView (контекст контекста) {супер (контекст);  в этом();  } общедоступный UnderlineTextView (контекст контекста, AttributeSet attrs) {super (context, attrs);  в этом();  } общедоступный UnderlineTextView (контекст контекста, AttributeSet attrs, int defStyle) {super (context, attrs, defStyle);  в этом();  } private void init () {addTextChangedListener (new TextWatcher () {@Override public void beforeTextChanged (CharSequence s, int start, int count, int after) {//Здесь ничего не делать ... нам все равно} @Override public  void onTextChanged (CharSequence s, int start, int before, int count) {//Здесь ничего не делаем ... нам все равно} @Override public void afterTextChanged (Editable s) {if (m_modifyingText) return; underlineText ();  }});  underlineText ();  } private void underlineText () {если (m_modifyingText) return;  m_modifyingText = true;  Содержимое SpannableString = новая SpannableString (getText ());  content.setSpan (новый UnderlineSpan (), 0, content.length (), 0);  setText (контент);  m_modifyingText = false;  }}  

Теперь … всякий раз, когда вы хотите создать подчеркнутый текст в XML, вы просто делаете следующее:

     

Я добавил дополнительные параметры в этот фрагмент XML, чтобы показать, что мой пример работает с изменением цвета, размера и стиля текста …

Надеюсь, это поможет!

Улучшите этот ответ
ответил 11 сен ’13 в 7:41
  • 2
    Пока этот пример работает, я быстро Я понял, что если вы когда-нибудь захотите получить дополнительный контроль в XML, этого просто не пойдет …. Я переключился на лучшее решение, которое включает следующие шаги: 1) Подкласс textview 2) Добавить поддержку для подчеркивания текста с помощью настраиваемых атрибутов, чтобы сделать подчеркивание, как указано выше. Единственное отличие состоит в том, что вы выполняете код подчеркивания только в том случае, если установлен настраиваемый атрибут. — Джастин 14 марта ’14 в 20:18
добавить комментарий |

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

Вот созданный мной класс:

  import android  .content.Context; import android.text.Editable; import android.text.SpannableString; import android.text.TextWatcher; import android.text.style.UnderlineSpan; import android.util.AttributeSet; import android.widget.TextView;/ ** * Создано с помощью IntelliJ IDEA.  * Пользователь: Джастин * Дата: 11.09.13 * Время: 1:10 */открытый класс UnderlineTextView расширяет TextView {частное логическое значение m_modifyingText = false;  общедоступный UnderlineTextView (контекст контекста) {супер (контекст);  в этом();  } общедоступный UnderlineTextView (контекст контекста, AttributeSet attrs) {super (context, attrs);  в этом();  } общедоступный UnderlineTextView (контекст контекста, AttributeSet attrs, int defStyle) {super (context, attrs, defStyle);  в этом();  } private void init () {addTextChangedListener (new TextWatcher () {@Override public void beforeTextChanged (CharSequence s, int start, int count, int after) {//Здесь ничего не делать ... нам все равно} @Override public  void onTextChanged (CharSequence s, int start, int before, int count) {//Здесь ничего не делаем ... нам все равно} @Override public void afterTextChanged (Editable s) {if (m_modifyingText) return; underlineText ();  }});  underlineText ();  } private void underlineText () {если (m_modifyingText) return;  m_modifyingText = true;  Содержимое SpannableString = новая SpannableString (getText ());  content.setSpan (новый UnderlineSpan (), 0, content.length (), 0);  setText (контент);  m_modifyingText = false;  }}  

Теперь … всякий раз, когда вы хотите создать подчеркнутый текст в XML, вы просто делаете следующее:

     

Я добавил дополнительные параметры в этот фрагмент XML, чтобы показать, что мой пример работает с изменением цвета, размера и стиля текста …

Надеюсь, это поможет!


11

Более чистый способ вместо
textView.setPaintFlags (textView.getPaintFlags () | Paint.UNDERLINE_TEXT_FLAG); — использовать метод textView.getPaint (). setUnderlineText (true);

И если вам понадобится позже отключить подчеркивание для этого представления, например, в повторно используемом представлении в RecyclerView, textView.getPaint (). setUnderlineText (false);

Улучшите этот ответ
ответил 14 марта ’18 в 0:49
добавить комментарий |

Более чистый способ вместо
textView.setPaintFlags (textView.getPaintFlags () | Paint. UNDERLINE_TEXT_FLAG); метод заключается в использовании textView.getPaint().setUnderlineText(true);

И если вам нужно позже отключить подчеркивание для это представление, например, в повторно используемом представлении в RecyclerView, textView.getPaint().setUnderlineText(false);


11

Самый последний подход к рисованию подчеркнутого текста описан Роменом Гаем на носителе с доступным исходным кодом на GitHub. Приложение предоставляет две возможные реализации:

  • Реализация на основе пути, для которой требуется уровень API 19
  • Реализация на основе региона, для которой требуется уровень API 1

Улучшите этот ответ
отредактировано 5 июня ’18 в 10:10
ответил 30 июня ’16 в 8:59
добавить комментарий |

Самый последний подход к рисованию подчеркнутого текста описан Роменом Гаем на носителе с доступным исходным кодом на GitHub. Этот пример приложения предлагает два возможных реализации:

  • Реализация на основе пути, для которой требуется уровень API 19
  • Реализация на основе региона, для которой требуется уровень API 1


11

Чтобы сделать это в Kotlin:

yourTextView.paint?. isUnderlineText = true

Улучшите этот ответ
отредактировано 6 апр. ’20 в 02:11
Muhammad Reda
23.8k1212 золотых знаков8484 серебряных знака9999 бронзовых знаков
ответил 5 апр. ’20 в 8:44
добавить комментарий |

Чтобы сделать это в Kotlin:

yourTextView.paint? .isUnderlineText = true


7

Просто используйте атрибут в строковом файле ресурсов, например

    Пример    

Улучшите этот ответ
отредактировал 16 ноября ’17 в 5 : 44
ответил 23 авг. в 12:15
добавить комментарий |

Просто используйте атрибут в файле строковых ресурсов, например

    Пример    

7

Я использовал этот XML-файл для создания нижней границы и применил его в качестве фона для моего текстового представления

              

Улучшите этот ответ
отредактировано 16 апреля ’18 в 22:36
Darush
9,01755 золотых знаков4848 серебряных знаков5252 бронзовых знака
ответил 20 ноября ’16 в 15:54
  • это идеальное решение для подчеркивания всех представлений с помощью настраиваемого цвета. Не игнорируйте прозрачный фон здесь, для android 4 это требуется, ваше представление будет иметь черный фон без него — Иван Мицура 31 мая 2018 в 20:45
добавить комментарий |

Я использовал этот xml-файл для создания бота tom-border и применил рисование в качестве фона к моему текстовому представлению

              

6

Простое и гибкое решение в xml:

    

Улучшите этот ответ
ответил 31 марта ’17 в 12:35
добавить комментарий |

Простое и гибкое решение в xml:


6
  TextView tv = findViewById (R.id.tv); tv.setText ("некоторый текст"); setUnderLineText (tv, "some")  ;  

Также поддерживает дочерние элементы TextView, такие как EditText, Button, Checkbox

  public void setUnderLineText  (TextView tv, String textToUnderLine) {String tvt = tv.getText (). ToString ();  int ofe = tvt.indexOf (textToUnderLine, 0);  UnderlineSpan underlineSpan = новый UnderlineSpan ();  SpannableString wordToSpan = новая SpannableString (tv.getText ());  for (int ofs = 0; ofs  

Если хотите

— Подчеркнутый текст с возможностью нажатия?

— Подчеркнуть несколько частей TextView?

Затем проверьте этот ответ

Улучшите этот ответ
отредактировано 7 августа ’20 в 11:47
ответил 13 мая 2018 в 19: 01
добавить комментарий |

  TextView tv = findViewById (R.id.tv  ); tv.setText ("some text"); setUnderLineText (tv, "some");  

Также поддерживает дочерние элементы TextView, такие как EditText, Button, Checkbox

  public void setUnderLineText (TextView tv, String textToUnderLine) {String tvt = tv.getText (). toString (); int ofe = tvt.indexOf (textToUnderLine,  0); UnderlineSpan underlineSpan = new UnderlineSpan (); SpannableString wordToSpan = new SpannableString (tv.getText ()); for (int ofs = 0; ofs  

Если хотите

— кликабельно un derline text?

— Подчеркнуть несколько частей TextView?

Затем отметьте этот ответ


4

Я упростил ответ Самуэля:

         

Улучшите этот ответ
ответил 16 апр. ’18 в 22:31
добавить комментарий |

Я упростил ответ Самуэля:

         -list>  

4

другое решение — создать пользовательское представление, расширяющее TextView, как показано ниже

  public class UnderLineTextView extends TextView {public UnderLineTextView (Context context) {super (context);  this.setPaintFlags (Paint. UNDERLINE_TEXT_FLAG);  } общедоступный UnderLineTextView (контекст контекста, @Nullable AttributeSet attrs) {super (context, attrs);  this.setPaintFlags (Paint.UNDERLINE_TEXT_FLAG);  }}  

и просто добавьте в xml, как показано ниже

    

Улучшите этот ответ
ответил 04 ноя 2018 в 12:46
  • Замечательно !! Но цвет подчеркивания серый как его поменять на черный или любой другой цвет? — OhhhThatVarun 12 авг., 19:09
добавить комментарий |

другое решение — создать пользовательское представление, расширяющее TextView, как показано ниже

  открытый класс UnderLineTextView расширяет TextView {общедоступный UnderLineTextView (контекст контекста) {супер (контекст);  this.setPaintFlags (Paint.UNDERLINE_TEXT_FLAG);  } общедоступный UnderLineTextView (контекст контекста, @Nullable AttributeSet attrs) {super (context, attrs);  this.setPaintFlags (Paint.UNDERLINE_TEXT_FLAG);  }}  

и просто добавьте в xml, как показано ниже

    

3

попробуйте этот код

в XML

    underline providedune>    

в коде

  TextView textView = (TextView) view.findViewById (R.id.textview); textView.setText (Html.fromHtml (getString (R.string.my_text)));  

Удачи!

Улучшите этот ответ
отредактировано 4 авг. в 11:18
Pragnesh Ghoda シ
8,06133 золотых знака2222 серебряных знака3939 бронзовых знаков
ответил 4 августа 2014 в 11:11
добавить комментарий |

попробуйте этот код

в XML

     underlinehibitedune>    

в коде

  TextView textView = (TextView) view.findViewById (R.id.textview); textView.setText (Html.fromHtml (getString (R.string.my_text)));   

Удачи!


2
  1. Перейти к файлу ресурсов strings.xml
  2. Добавить строку в файл ресурсов с тегом подчеркивания HTML, если необходимо.

строки .xml пример подчеркивания HTML

  1. Вызовите идентификатор строкового ресурса в своем Java-коде следующим образом:
  sampleTextView.setText (R.string.sample_string);  
  1. На выходе должно быть слово «Stackoverflow» подчеркнутый.

Кроме того, следующий код не будет печатать подчеркивание:

  String sampleString = getString (R.string.sample_string  ); sampleTextView.setText (sampleString);  

Вместо этого используйте следующий код для сохранения форматированного текста:

  CharSequence sampleString  = getText (R.string.sample_string); sampleTextView.setText (sampleString);  

«Вы можете использовать getString (int) или getText (int) для получить строку. getText (int) сохраняет все стили форматированного текста, примененные к строке «. Документация по Android.

См. документацию: https://developer.android.com/guide/topics/ resources/string-resource.html

Надеюсь, это поможет.

Улучшите этот ответ
отредактировано 6 июля ’18 в 8:52
hqzxzwb
3,87011 золотых знаков99 серебряных знаков1515 бронзовых знаков
30 июля ’17 в 07:47
добавить комментарий |

  1. Перейти к файлу ресурсов strings.xml
  2. Добавить строка в файле ресурсов с тегом подчеркивания HTML, если необходимо.

strings. xml образец подчеркивания HTML

  1. Вызовите идентификатор строкового ресурса в своем Java-коде следующим образом:
  sampleTextView.setText (R.string.sample_string);  
  1. В выводе должно быть подчеркнуто слово «Stackoverflow» .

Кроме того, следующий код не будет печатать подчеркивание:

  String sampleString = getString (R.string.sample_string)  ; sampleTextView.setText (sampleString);  

Вместо этого используйте следующий код для сохранения расширенного текстового формата:

  CharSequence sampleString =  getText (R.string.sample_string); sampleTextView.setText (sampleString);  

«Вы можете использовать getString (int) или getText (int) для получения строка. getText (int) сохраняет любой стиль форматированного текста, примененный к строке «. документация по Android.

См. документацию: https://developer.android.com/guide /topics/resources/string-resource.html

Надеюсь, этот привет пс.


2

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

Решение: не используйте «WRAP_CONTENT» только для ваш TextView, потому что для рисования линии нет лишнего места. Вы можете установить фиксированную высоту для своего TextView или использовать android: paddingVertical с WRAP_CONTENT.

Улучшите этот ответ
ответил 29 января ’19 в 11:16
добавить комментарий |

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

Решение: не используйте «WRAP_CONTENT» только для ваш TextView, потому что для рисования линии нет лишнего места. Вы можете установить фиксированную высоту для своего TextView или использовать android: paddingVertical с WRAP_CONTENT.


1
  HtmlCompat.fromHtml (String.format (context.getString (R.string.set_target_with_underline)), HtmlCompat. FROM_HTML_MODE_LEGACY)  & lt; u> Установить цель & lt; u>  

Обратите внимание на символ Escape в XML-файле

Улучшите этот ответ
отредактировал 22 февраля ’19 в 1: 05
ответил 20 февраля ’19 в 9:42
добавить комментарий |

  HtmlCompat.fromHtml (String.format (context.getString (R.string.set_target_with_underline)), HtmlCompat.FROM_HTML_MODE_LEGACY  )  & lt; u> Установить цель & lt; u>  

Обратите внимание на символ Escape в XML-файле


1

Очень компактная версия для котлина:

   tvTitle.apply {text = "foobar" paint? .isUnderlineText = true}  

Улучшите этот ответ
ответил 17 сентября ’20 в 10:06
  • Чем этот ответ отличается от ответа, опубликованного 5 апреля? — Эдрик 17 сен ’20 в 10:09
добавить комментарий |

Очень компактная версия для котлина:

  tvTitle.apply {text = "foobar  "краска? .isUnderlineText = true}  

1

Если вы хотите добиться этого в XML , объявите свою строку в ресурсе и поместите это значение ресурса в тег подчеркивания ( ) HTML. в TextView добавьте

  android: text = "@ string/your_text_reference"  

И в строковое значение ресурса

    Подчеркните меня    

Если вы хотите добиться этого программно для Kotlin используйте

  textView.paintFlags = textView.paintFlags или Paint.UNDERLINE_TEXT_FLAG  

или

  textView.text = Html. fromHtml ("

Подчеркни меня

")
Улучшите этот ответ
отредактировано 01 декабря ’20 в 11:57
ответил 27 ноября ’20 в 17:20
добавить комментарий |

Если вы хотите добиться этого в XML , объявите свою строку в ресурсе и поместите это значение ресурса в тег подчеркивания ( ) HTML. в TextView добавьте

  android: text = "@ string/your_text_reference"  

И в строковом значении ресурса

    Подчеркните меня    

Если вы хотите добиться этого программно, для Kotlin используйте

  textView.paintFlags = textView.  paintFlags или Paint.UNDERLINE_TEXT_FLAG  

или

  textView.text = Html.fromHtml ("

Подчеркнутый я

")

0

Уже поздно отвечать на этот вопрос, но предположим, что если кто-то хочет получить текст динамически, он может использовать эту простую строку в своем java-коде, которая работает:

  textView.setText (Html.fromHtml ("

" + get_name + "

"));
Улучшите этот ответ
ответил 06 марта ’20 в 14:45
добавить комментарий |

Уже поздно отвечать на этот вопрос, но предположим, что если кто-то хочет получить текст динамически, то он может использовать эту простую строку в своем Java-коде который работает:

  textView.setText (Html.fromHtml ("

" + get_name + "

"));

-2

У меня был проблема, когда я использую собственный шрифт и подчеркивание, созданное с помощью трюка с файлом ресурсов ( Подчеркнутый текст ), работало, но Android удалось преобразовать подчеркивание в сортировку забастовки.

Я использовал этот ответ, чтобы нарисовать границу под текстовым представлением самостоятельно: https://stackoverflow.com/a/10732993/664449. Очевидно, это не работает для частично подчеркнутого текста или многострочного текста.

Улучшите этот ответ
отредактировано 23 мая ’17 в 12:02
Сообщество ♦
111 серебряный значок
ответил 12 июля ’13 в 9:00
добавить комментарий |

У меня возникла проблема, когда я использую собственный шрифт и подчеркивание, созданное с помощью трюка с файлом ресурсов ( Подчеркнутый текст ) работал, но Android сумел преобразовать подчеркивание в своего рода вычеркивание.

Я сам использовал этот ответ, чтобы нарисовать границу под текстовым окном. : https://stackoverflow.com/a/10732993/664449. Очевидно, это не работает для частично подчеркнутого или многострочного текста.

Оцените статью
logicle.ru
Добавить комментарий