假设你在values/styles.xml上有一个名为RedHUGEText的样式:
<style name="RedHUGEText" parent="@android:style/Widget.TextView">
<item name="android:textSize">@dimen/text_size_huge</item>
<item name="android:textColor">@color/red</item>
<item name="android:textStyle">bold</item>
</style>
只是像往常一样在XML layout/your_layout.xml文件中创建你的TextView,让我们说:
<TextView android:id="@+id/text_view_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content
android:text="FOO" />
在Activity的java代码中,你这样做:
TextView textViewTitle = (TextView) findViewById(R.id.text_view_title);
textViewTitle.setTextAppearance(this, R.style.RedHUGEText);
这对我很管用!它可以应用颜色,大小,重力等。我在Android API级别从8到17的手机和平板电脑上使用过,没有任何问题。请注意,在Android 23中,该方法已被弃用。context参数已经被删除,所以最后一行需要是:
textViewTitle.setTextAppearance(R.style.RedHUGEText);
支持所有API级别使用androidX TextViewCompat
TextViewCompat.setTextAppearance(textViewTitle, R.style.RedHUGEText)
记得……只有当文本的风格真的依赖于你的Java逻辑的条件,或者你正在用代码“快速”构建UI时,这才有用……如果没有,最好这样做:
<TextView android:id="@+id/text_view_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content
android:text="FOO"
style="@style/RedHUGEText" />
你可以随心所欲!