我正在以编程方式创建textView。有没有办法可以设置这个textView的样式?类似于
的东西style="@android:style/TextAppearance.DeviceDefault.Small"
如果我有一个layout.xml文件,我将使用它。
答案 0 :(得分:49)
您无法以编程方式设置视图的样式,但您可以执行textView.setTextAppearance(context, android.R.style.TextAppearance_Small);
之类的操作。
答案 1 :(得分:27)
目前无法以编程方式设置View的样式。
要解决此问题,您可以创建一个分配了样式的模板布局xml文件,例如在res/layout
创建tvtemplate.xml
中,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is a template"
style="@android:style/TextAppearance.DeviceDefault.Small" />
然后膨胀它以实例化你的新TextView:
TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
答案 2 :(得分:6)
实际上,从API级别21开始,这是可能的。
TextView有4 parameter constructor:
TextView (Context context,
AttributeSet attrs,
int defStyleAttr,
int defStyleRes)
在这种情况下,不需要中间的两个参数。以下代码直接在活动中创建TextView,并仅定义其样式资源:
TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style);
答案 3 :(得分:5)
试试这个
textview.setTextAppearance(context, R.style.yourstyle);
这可能不起作用尝试使用textview这样创建一个xml
textviewstyle.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.DeviceDefault.Small" />
要获得所需的样式,请为包含textview的xml充气
TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvstyle, null);
答案 4 :(得分:4)
Compat版本(由于api 23中的弃用):
TextViewCompat.setTextAppearance(textView, android.R.style.TextAppearance_DeviceDefault_Small);
答案 5 :(得分:1)
对于在运行时生成的视图(在代码中),您可以将样式传递给构造函数:View(Context, AttributeSet, int)
在其他情况下,您必须调用varios方法来更改外观
答案 6 :(得分:0)
@Deprecated
public void setTextAppearance(Context context, @StyleRes int resId)
自Android SKD 23起,此方法已弃用。
你可以使用安全版本:
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
答案 7 :(得分:0)
textView.setTextAppearance(context, android.R.style.TextAppearance_Small);
在 Java 中已被弃用,因此在没有 kotlin 上下文的情况下使用它
textView.setTextAppearance(android.R.style.TextAppearance_Small)