我正在以编程方式创建一个 textView。有没有办法可以设置这个 textView 的样式?类似的东西
style="@android:style/TextAppearance.DeviceDefault.Small"
如果我有layout.xml
文件,我会使用它。
我正在以编程方式创建一个 textView。有没有办法可以设置这个 textView 的样式?类似的东西
style="@android:style/TextAppearance.DeviceDefault.Small"
如果我有layout.xml
文件,我会使用它。
您不能以编程方式设置视图的样式,但您可以执行类似textView.setTextAppearance(context, android.R.style.TextAppearance_Small);
.
目前无法以编程方式设置视图的样式。
为了解决这个问题,您可以创建一个分配了样式的模板布局 xml 文件,例如在res/layout
create tvtemplate.xml
as 中具有以下内容:
<?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);
实际上,这在 API 级别 21 中是可能的。
TextView 有一个4 参数构造函数:
TextView (Context context,
AttributeSet attrs,
int defStyleAttr,
int defStyleRes)
在这种情况下,中间两个参数不是必需的。下面的代码直接在一个activity中创建了一个TextView,并且只定义了它的样式资源:
TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style);
兼容版本(由于 api 23 中的弃用):
TextViewCompat.setTextAppearance(textView, android.R.style.TextAppearance_DeviceDefault_Small);
试试这个
textview.setTextAppearance(context, R.style.yourstyle);
这可能不起作用尝试使用这样的文本视图创建 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);
对于在运行时(在代码中)生成的视图,您可以将样式传递给构造函数:View(Context, AttributeSet, int)
在其他情况下,您必须调用 varios 方法来更改外观
@Deprecated
public void setTextAppearance(Context context, @StyleRes int resId)
自 Android SDK 23 起,此方法已弃用。
您可以使用安全版本:
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
textView.setTextAppearance(context, android.R.style.TextAppearance_Small);
在 java 中已被弃用,因此在没有上下文的情况下使用 kotlin
textView.setTextAppearance(android.R.style.TextAppearance_Small)