至于TextView,以编程方式更改样式?

Posted

技术标签:

【中文标题】至于TextView,以编程方式更改样式?【英文标题】:As for the TextView, programmatically change the style? 【发布时间】:2016-04-24 11:59:09 【问题描述】:

例如:

TextView textView = new TextView(PhotoActivity.this);
textView.setText("Photo not found.");

如何设置样式?

textView.set... ???

【问题讨论】:

android 文档中检查(XML 属性)旁边的(相关方法)以获取 textview developer.android.com/reference/android/widget/TextView.html 在谷歌上搜索。太老的问题 Android - set TextView TextStyle programmatically?的可能重复 请接受一个答案,我会回来支持这个问题;许多人提供了很好的信息。 【参考方案1】:

您可以使用 setTextAppearance / setTextAppearance 更改 TextView 样式

对于低于 api 级别 23

setTextAppearance(int res id)

从 api 级别 23

setTextAppearance (Context context, int resId)


TextView textView = new TextView(PhotoActivity.this);
        textView.setText("Photo not found.");
        if (Build.VERSION.SDK_INT > 22) 
            textView.setTextAppearance(PhotoActivity.this, R.style.yourTextViewStyleResourceID);
            /*
            * To give font style Bold Italic I would suggest you check this answer
            * https://***.com/a/6200841
            * */
         else 
            textView.setTextAppearance(R.style.yourTextViewStyleResourceID);
        

更新

也可以在不检查 sdk 版本的情况下赋予样式

TextViewCompat.setTextAppearance(textViewObject, R.style.yourTextViewStyleResourceID);

要给字体样式加粗斜体,我建议你检查this answer

【讨论】:

作为@JorgeCastillo notes,您可以使用TextViewCompat避免版本检查:TextViewCompat.setTextAppearance(statusLinkTextView, R.style.YourTextAppearanceStyle);【参考方案2】:

对于样式,您可以使用以下选项:

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

【讨论】:

这应该是公认的答案。这是最简单有效的。 这会改变字体,不是样式。【参考方案3】:

谢谢大家,我找到了我需要的解决方案。

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(AbsListView.LayoutParams.WRAP_CONTENT, AbsListView.LayoutParams.FILL_PARENT);
params.weight = 1.0f;
params.gravity = Gravity.CENTER;

TextView textView = new TextView(PhotoActivity.this);
textView.setText("Photo not found.");
textView.setTextColor(Color.WHITE);
textView.setLayoutParams(params);

作为替代方式:

textView.setGravity(Gravity.CENTER);

【讨论】:

如果这是您的答案和解决方案,而不是“如何动态设置 TextColor?”而不是如何设置样式? 在哪个 multiverse 中会更改样式,如“至于 TextView,以编程方式更改样式?”中所述。 ??????【参考方案4】:

您可以使用以下链接:

How to change a TextView's style at runtime

Set TextView style (bold or italic)

祝你好运。

【讨论】:

【参考方案5】:

要以编程方式设置 TextView 样式,您必须具有继承 TextAppearance 样式的样式,并且可以使用以下方法应用它:

TextViewCompat.setTextAppearance(statusLinkTextView, R.style.YourTextAppearanceStyle);

【讨论】:

以上是关于至于TextView,以编程方式更改样式?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式设置 TextView 的样式

以编程方式动态 textview 的文本更改布局中的其他视图,我不希望它

以编程方式更改约束布局中的高度?

以编程方式单击时突出显示 TextView

以编程方式更改整个应用程序的文本颜色

样式图:以编程方式更改 JSON 文件