Подтвердить что ты не робот

Android - настройка TextView на полужирный шрифт

Вот XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/modal_list_row"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="7.5dp"
    android:orientation="vertical" >

    <TextView
                android:id="@+id/title_text_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                android:text="@string/alert_title_small"
                android:textColor="@color/alert_dialog_text_color"
                android:textSize="@dimen/alert_dialog_title_font_size"
                android:textStyle="bold" />

</RelativeLayout>

Хотя графический макет отображает жирный текст, на устройстве это не так. Это вещь устройства или что?

Update:

Для тех, кто продолжает просить полный XML, здесь он обновляется. Простая относительная компоновка. И вот код Java:

this.titleTextView.setText(this.modalListState.title);

О чем подумать: возможно ли это из-за шрифтов устройства? Кто-нибудь имеет Galaxy S3 для подтверждения? Это может быть стиль деятельности? Вот тот, который используется для всего приложения:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

-->
<style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.

    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

<style name="TransparentActivity" >
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowFullscreen">false</item>
</style>

Стиль TransparentActivity используется для соответствующей активности.

4b9b3361

Ответ 1

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

Ответ 2

существует один метод, вы можете установить шрифт textview, вызвав метод setTypeface...

 textView.setTypeface(null, Typeface.BOLD_ITALIC);
 textView.setTypeface(null, Typeface.BOLD);
 textView.setTypeface(null, Typeface.ITALIC);

а также ссылку на эту ссылку...

Установить стиль TextView (полужирный или курсив)

Ответ 3

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

Отметьте следующее, чтобы убедиться, что это не устройство.

  • убедитесь, что размер шрифта правильно определен для файла правильных размеров для показателей целевого устройства.
  • Некоторые устройства позволяют изменять размер текста по умолчанию. Проверьте размер текста по умолчанию в разделе "Настройки" на устройстве.
  • Любой стиль или тема, применяемые в вашем файле манифеста для активности, в которой отображается макет. Попробуйте удалить стиль/тему на некоторое время.
  • попробуйте жестко закодировать размер шрифта до четного числа, например. 24SP
  • проверьте свойство scale любого из родительских представлений/макетов.
  • ни один код не пытается изменить стиль шрифта во время выполнения.

Ответ 4

Большинство ответов верны.

Вы также можете использовать так называемый SpannableString

Вы можете использовать его следующим образом:

String bold = "yes !";
String notBold = "no ";
SpannableString text = new SpannableString ( notBold + bold );
text.setSpan ( new StyleSpan ( Typeface.BOLD ) , notBold.length () , text .length () , 0 );
myTextView.setText ( text , BufferType.SPANNABLE );

Что приятно в SpannableString, так это то, что вы можете применять mutliple spans, каждый из которых находится в разных частях строки! Как вы заметили, я применил полужирный шрифт только к части строки (вы указываете начальный и конечный индексы), и она должна выглядеть так:

no да!

В методе setSpan вы указываете применяемый SPAN, начальный индекс, конечный индекс и флаги (я всегда использую 0) в этом конкретном порядке.

Вы можете даже применять другие промежутки, например изменить размер текста (используйте RelativeSizeSpan) или даже цвет ( используйте ForegroundColorSpan) и многое другое!

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

text.setSpan ( new ForegroundColorSpan ( Color.RED) , 0 , notBold .length () , 0 );

И теперь первая часть строки (содержащая слово no) будет отображаться красным цветом!

Ответ 5

Попробуйте использовать теги HTML в файле strings.xml. Вот как вы можете это сделать, android string.xml чтение html-тегов проблемы

Чтобы сделать это программно,

TextView t = new TextView(mContext);
t.setText(Html.fromHtml("<b>This is bold</b>"));

Ответ 6

Я столкнулся с аналогичной проблемой с экранированным символом <. Вместо этого вы должны использовать &lt;. Например:

<string name="greetings">&lt;b>From Russia with love&lt;/b></string>

Он написан на официальном сайте .

Ответ 7

Создайте собственную тему для или всего макета устройства. и установите в свой текст.

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

Если у вас есть тест на эту проблему, измените размер шрифта до 40 секунд и выполните что случилось?

Ответ 8

Не могли бы вы разместить все ваши коды java и xml, чтобы мы могли получить дополнительную информацию о вашей проблеме?

Возможно, проблема не в TextView, который вы показываете нам, но пока

android:textStyle="bold"

похоже, работает над вашим графическим расположением.

Ответ 9

Должна быть выделена жирная/курсивная/подчеркнутая (то есть целевая) версия шрифта. Система не волшебным образом создает его для вас.

Таким образом, убедитесь, что включен целевой вариант вашего шрифта.