如何使存储在字符串变量中的文本变为粗体?

时间:2017-12-08 16:17:02

标签: android html string material-design android-alertdialog

我想将存储在字符串变量中的文本变为粗体。

String buttonText = t.getText()。toString();                 String val = map.get(buttonText);

          new MaterialDialog.Builder(LearningMode.this)
                    .iconRes(BalloonColor.get(2))
                    .limitIconToDefaultSize() 
                    .title("Meaning")

                    .content(buttonText+"\n"+val)

                    .positiveText("Continue")
                    .cancelable(false)
                    .onPositive(new MaterialDialog.SingleButtonCallback() {
                        @Override
                        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                            mover.resume();
                        }
                    })

                    .show();

at .content(buttonText +“\ n”+ val) 我希望存储在其中的字符串变为粗体。 我试过html.fromhtml它不能正常工作

喜欢这个Html.fromHtml(“< b>”+ buttonText +“< / b>”)

在上面添加了空格,因为它正在转换为粗体

和其他方法,例如在strings.xml中使用< b>不会在这里工作,因为我在这里以编程方式处理它!

最终当输出sholud中的字符串按钮文本显示为粗体时。

我已经提到了这个Set TextView text from html-formatted string resource in XML

更新:
没有使用textview。

有人请帮忙!

3 个答案:

答案 0 :(得分:2)

只要您传入支持粗体文字的MaterialDialog.Builder content(CharSequence)CharSequence类的Html.fromHtml()方法就可以很好地使文字变为粗体。我知道你说public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResumeFragments() { super.onResumeFragments(); String myString = "test"; new MaterialDialog.Builder(this) .title("Hello world") .content(Html.fromHtml("this is a <b>" + myString + "</b>")) .positiveText("OK") .show(); } } 不起作用,但在我的测试中它完美无缺。这是一个非常简单的活动,它是一个概念证明:

$.fn.colorBlocks = function(colorContainer, rangeSlider) {

enter image description here

答案 1 :(得分:1)

您可以使用SpannableString。比如你说一个名为txt的TextView然后代码是:

 SpannableStringBuilder sb = new SpannableStringBuilder("HELLOO");
 StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD);

 sb.setSpan(bss, 0, sb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);

 txt.setText(sb);

更新

正如我在材料对话库中看到的,它有bug,所以尝试下面的代码

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {


        return new MaterialDialog.Builder(getActivity())
                .title(R.string.about)
                .positiveText(R.string.dismiss)
                .content(fromHtml(getString(R.string.about_body)))
                .contentLineSpacing(1.6f)
                .build();


    }
@SuppressWarnings("deprecation")
public static Spanned fromHtml(String html){
    Spanned result;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
        result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
    } else {
        result = Html.fromHtml(html);
    }
    return result;
}
}

了解更多https://github.com/afollestad/material-dialogs/issues/1290

答案 2 :(得分:0)

试试这个:

 buttonText.setTypeface(null, Typeface.BOLD);