至于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,以编程方式更改样式?的主要内容,如果未能解决你的问题,请参考以下文章