14

我的应用程序中有一个按钮。按钮中的文本为“ Type: Location”之类的东西。

我想知道是否可以将按钮上的文本更改为“类型:位置”

即在按钮上部分加粗文本??

提前感谢您的时间。

4

6 回答 6

31

我们有一个更好的选择,比如:android:textStyle="bold" android api support bold

于 2011-09-02T10:36:07.650 回答
24

只需将您的字符串放入 strings.xml 并像这样更改它,

 <string name="hello"><b>Hello</b> World, fh!</string>

并将此文本设置为您的按钮,如下所示

<Button
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAllCaps="false"
    android:text="@string/hello"
    />

有时,当您可能不得不使用动态文本时,上述方法将无济于事。所以在这种情况下SpannableString开始行动。

  String tempString="Copyright";
  Button button=(Button)findViewById(R.id.button);
  SpannableString spanString = new SpannableString(tempString);
  spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, spanString.length(), 0);
  button.setText(spanString);
于 2011-09-02T10:32:17.153 回答
4

您可以使用它来设置它Html.fromHtml(),并将其作为字符串提供,这是一个带有 HTML 元素的字符串资源。希望这可以帮助!

于 2011-09-02T10:24:29.080 回答
3

使用跨度:

SpannableStringBuilder builder = new SpannableStringBuilder("Type: your type here!");
StyleSpan boldStyle = new StyleSpan(Typeface.BOLD);
builder.setSpan(boldStyle, 0, 5, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
((Button) findViewById(R.id.button)).setText(builder);
于 2011-09-02T10:49:30.030 回答
2

您可以在字符串中使用基本标记目录,例如

"<b>Type</b>: Location"

请参阅使用 HTML 标记进行样式设置

于 2011-09-02T10:29:53.190 回答
1

如果想以编程方式设置文本,请使用此方法

按钮

首先你必须在 XML 中设置按钮的属性

android:textAllCaps="false" // very important without this property might be it won't show effect

public SpannableString setSpanableString(String textString, int start, int end){

    SpannableString spanString = new SpannableString(textString);
    spanString.setSpan(new StyleSpan(Typeface.BOLD), start, end, 0);

    return spanString;
}


Button btn; // get your button reference here

String text = "Hi, Dharmbir";
btn.setText(setSpanableString(text, 4, text.length));// set here your index

文本视图

TextView tv; // get your TextView reference here

String text = "Hi, Dharmbir";
tv.setText(setSpanableString(text, 4, text.length));

输出

嗨,达尔比尔

于 2016-12-24T09:47:11.310 回答