2015-03-30 21 views
1

我希望能夠在應用程序範圍內設置文本大小。 所以我需要能夠訪問代碼和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'在這種情況下。

那麼有沒有辦法做到這一點?

如果沒有,我可能需要設置所有需要設置的文本大小,以編程方式。 希望有人知道更好的方法。

回答

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

+0

感謝您的BB。唯一的事情是我需要訪問代碼中的值。 我似乎無法做到這一點。 – SmokeTester 2015-03-30 19:01:10

+0

我編輯了我的答案, – Blackbelt 2015-03-30 19:04:04

+0

優秀的答案,作品一種享受。 我認爲「TypedValue.COMPLEX_UNIT_PX」是我錯過的重要一點。 非常感謝。 – SmokeTester 2015-03-30 20:12:09

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)); 
+0

給了一個嘗試,並且xml使用正常工作。 但在代碼中我得到值60.449997。我認爲'sp'混淆瞭解析器。 – SmokeTester 2015-03-30 18:24:47

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> 

相關問題