Android - 将TextView设置为粗体不起作用

时间:2013-06-07 22:32:45

标签: 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>

虽然图形布局显示粗体文本,但设备上却没有。它是设备还是什么?

更新

对于那些不断要求完整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样式用于相关活动。

10 个答案:

答案 0 :(得分:34)

好吧,我发现这个问题很愚蠢。我在设备上使用自定义字体,而不是默认字体。一旦我切换到默认值,每件事都按预期工作!

答案 1 :(得分:20)

有一种方法,你可以通过调用setTypeface方法设置textview字体...

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

并且也参考此链接...

Set TextView style (bold or italic)

答案 2 :(得分:5)

大部分答案都是正确的。

您还可以使用所谓的: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 的好处在于,您可以在字符串的不同部分应用多个跨度!正如您所注意到的,我只在字符串的一部分上应用了粗体类型的面(您指定了开始和结束索引),它应该如下所示:

  

没有是的!

setSpan 方法中,您可以按特定顺序指定要应用的SPAN,起始索引,结束索引和标志(我总是使用0)。

您甚至可以应用其他跨度,例如更改文字大小(使用RelativeSizeSpan),甚至是颜色(使用ForegroundColorSpan)等等!

以下是颜色范围的示例,您可以通过以下方式实现:

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

现在,字符串的第一部分(包含一词)将以红色显示!

答案 3 :(得分:5)

在移动设备上运行应用程序时,TextView未变为粗体的原因是您必须在活动中使用Calligraphy。因此,要将样式更改为粗体,您只需在java文件中编写以下代码即可。

 textView.setTypeface(textView.getTypeface(), Typeface.BOLD);

祝你好运

答案 4 :(得分:3)

维度文件中定义的字体大小可能在运行期间未被拾取。 猜猜你没有在模拟器中运行应用程序。

检查以下内容以确保其不是设备。

  • 确保为目标设备指标的正确维度文件正确定义字体大小
  • 某些设备允许更改默认文字大小。检查设备中“设置”下的默认文字大小。
  • 清单文件中应用的任何样式或主题,用于显示布局的活动。尝试删除样式/主题一段时间。
  • 尝试将字体大小编码为偶数,例如24sp
  • 检查任何父视图/布局的scale属性。
  • 在运行时没有代码尝试更改字体样式。

答案 5 :(得分:1)

尝试在strings.xml文件中使用HTML标记 。这就是你如何做到的,android string.xml reading html tags problem

以编程方式执行,

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

答案 6 :(得分:1)

必须有字体的粗体/斜体/下划线(即目标)版本。系统不会为你神奇地创造它。

因此,请确保包含字体的目标变体。

答案 7 :(得分:1)

我遇到了与转义字符<类似的问题。您必须使用&lt;。例如:

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

它写在official site

答案 8 :(得分:0)

为所有设备布局创建自定义主题。 并设置为 textview

我认为问题是文字会很慢,所以你可以得到任何效果。

  

如果您已测试此问题,请将字体大小更改为40sp并运行   会发生什么?

答案 9 :(得分:0)

您能否为我们发布所有java和xml代码以收集有关您的问题的更多信息?

问题可能不在您向我们展示的TextView中,而是到目前为止

android:textStyle="bold"

似乎适用于您的图形布局。