我希望能够在应用程序范围内设置文本大小。 所以我需要能够访问代码和xml中的值。
我尝试将尺寸放在我的dimens.xml中,如下所示......
<item name="text_size_small" type="dimen" format="float">15.0</item>
但我无法在xml中重复使用它,即......
android:textSize="@dimen/text_size"
给出例外......
android.view.InflateException: Binary XML file line #29: Error inflating class RadioButton
另外我认为在这种情况下我需要指定单位,即'sp'。
那么有办法吗?
如果没有,我可能必须以编程方式设置所有需要设置的文本大小。 希望有人知道更好的方法。
答案 0 :(得分:1)
在dimens.xml
内,您可以使用<dimen
项,并指定单位:
<dimen name="text_size_small">15sp</dimen>
以编程方式访问它,
textview.setTextSize(getResources().getDimension(R.dimen.text_size_small), TypedValue.COMPLEX_UNIT_PX);
尺寸已经缩放了单位,因此您无需再次应用转换,因此TypedValue.COMPLEX_UNIT_PX
答案 1 :(得分:0)
In your dimens.xml specify your like this
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="text_size_small">15sp</dimen>
</resources>
In your layout use this
android:textSize="@dimen/text_size_small"
If you want to set this programtically, try like this
textview.setTextSize(getResources().getDimension(R.dimen.text_size_small));
答案 2 :(得分:0)
您必须定义自己的textview样式。
@styles
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:textViewStyle">@style/CMTextView</item
</style>
<style name="CMTextView" parent="android:style/Widget.TextView">
<item name="android:textSize">@dimen/text_size</item>
</style>
@dimens
<dimen name="text_size">18sp</dimen>