如何在一个地方设置应用程序的文字大小?

时间:2015-03-30 17:45:21

标签: android

我希望能够在应用程序范围内设置文本大小。 所以我需要能够访问代码和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'。

那么有办法吗?

如果没有,我可能必须以编程方式设置所有需要设置的文本大小。 希望有人知道更好的方法。

3 个答案:

答案 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>