Любое представление тела об этом, Как установить текст подчеркивания в textview? если да, сообщите.
Я использовал следующий код, но не работал.
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>").toString());
Заранее спасибо
Любое представление тела об этом, Как установить текст подчеркивания в textview? если да, сообщите.
Я использовал следующий код, но не работал.
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>").toString());
Заранее спасибо
Для этого вам необходимо использовать SpannableString:
String mystring=new String("Hello.....");
SpannableString content = new SpannableString(mystring);
content.setSpan(new UnderlineSpan(), 0, mystring.length(), 0);
yourtextview.setText(content);
Обновление: вы можете отсылать мой ответ на Underling TextView здесь всеми возможными способами.
Ниже приведены некоторые подходы для подчеркнутого текста в android:
1-й подход
Вы можете определить свою строку в strings.xml
<string name="your_string"><u>Underlined text</u></string>
И используйте эту строку в файле xml
<TextView
android:id="@+id/txt_underlined"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/your_string"/>
Или вы можете использовать эту строку в своем Activity/Fragment
txtView.setText(R.string.your_string);
Второй подход
Чтобы подчеркнуть текст в TextView, вы можете использовать SpannableString
String text="Underlined Text";
SpannableString content = new SpannableString(text);
content.setSpan(new UnderlineSpan(), 0, text.length(), 0);
txtView.setText(content);
Третий подход
Вы можете использовать метод SetPaintFlags для TextView, чтобы подчеркнуть текст TextView.
txtView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
txtView.setText("Underlined Text");
4-й подход
Использовать Html.fromHtml(htmlString)
;
String htmlString="<u>Underlined Text</u>";
txtView.setText(Html.fromHtml(htmlString));
Или
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Примечание:
Если вы добавили эту строку android:textAllCaps="true"
в свой макет, то ни одно из вышеперечисленных действий не будет работать. Для этого вам нужно определить свою строку в Caps, а затем любой из указанных выше способов.
Использовать этот
tvHide.setPaintFlags(tvHide.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Android поддерживает форматирование строк с использованием тегов HTML в строках xml. Таким образом, будет работать следующее:
<string name="label_testinghtmltags"><u>This text has an underscore</u></string>
Тогда вы просто используете его, как обычно. Вы можете увидеть больше в документации здесь
Обновить:
Чтобы еще больше расширить ответ, в документации говорится:
... методы
format(String, Object...)
иgetString(int, Object...)
удаляют всю информацию о стиле из строки. , Обходным путем является написание HTML-тегов с экранированными сущностями, которые затем восстанавливаются с помощью fromHtml (String) после форматирования
Например, результирующая строка из следующего фрагмента кода не будет отображаться как содержащая подчеркнутые элементы:
<string name="html_bold_test">This <u>%1$s</u> has an underscore</string>
String result = getString(R.string.html_bold_test, "text")
Однако результат из следующего фрагмента будет содержать подчеркивания:
<string name="html_bold_test">This <u> %1$s </u> has an underscore</string>
String result = Html.fromHtml(getString(R.string.html_bold_test, "text"))
вы почти там: просто не назовите toString()
на Html.fromHtml()
, и вы получите Spanned Object, который будет выполнять задание;)
tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>"));
Попробуй это,
tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);
Не нужно использовать свойства HTML, давайте сосредоточимся на java xD У меня была та же проблема, я нашел способ сделать это в java:
String text="Hide post";
TextView tvHide=(TextView)findViewById(R.id.text);
SpannableString spanString = new SpannableString(text);
spanString.setSpan(new UnderlineSpan(), 0, spanString.length(), 0);
tvHide.setText(spanString );
Я считаю, что вам нужно использовать CharSequence. Вы можете найти здесь здесь.
Вы можете сделать это как:
tvHide.setText(Html.fromHtml("<p><span style='text-decoration: underline'>Hide post</span></p>").toString());
Надеюсь, что это поможет
Простой и легкий способ отображения подчеркивания в TextView
:
yourTextView.getPaint().setUnderlineText(true);
И если вы хотите удалить подчеркивание для этого представления, вы можете написать ниже код:
yourTextView.getPaint().setUnderlineText(false);
Это будет работать, даже если вы установите android:textAllCaps="true"
Вы можете легко добавить View с высотой выравнивания 1dp и концом TextView, прямо под ним. Вы также можете использовать marginTop с отрицательным значением, чтобы подчеркнуть подчеркивание ближе к TextView. Если вы используете TextView и нижнюю часть внутри относительного макета, выравнивания будет намного проще. вот пример:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/viewForgotPasswordUnderline"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_below="@id/txtForgotPassword"
android:layout_alignStart="@id/txtForgotPassword"
android:layout_alignEnd="@id/txtForgotPassword"
android:layout_marginTop="-2dp"
android:background="@color/lightGray" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txtForgotPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:paddingTop="8dp"
android:text="@string/userLoginForgotPassword"
android:textColor="@color/lightGray"
android:textSize="16dp" />
</RelativeLayout>
В моем файле sign_in.xml
я использовал это:
<Button
android:id="@+id/signuptextlinkbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@android:color/transparent"
android:onClick="performSingUpMethod"
android:text="Sign up now!"
android:textColor="#5B55FF"
android:textSize="15dp"
android:textStyle="bold" />
В моем файле SignIn.java
я использовал это:
import android.graphics.Paint;
Button signuptextlinkbutton = (Button) findViewById(R.id.signuptextlinkbtn);
signuptextlinkbutton.setPaintFlags(signuptextlinkbutton.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);
Теперь я вижу, что моя ссылка подчеркнута. Это был просто текст, даже если бы я объявил его как Button
.