2014-10-31 49 views
8

我知道DynamicLayout適用於其文本被更改的版式,而StaticLayout則處理不可變的文本。StaticLayout和DynamicLayout之間有什麼區別

然而,這兩個類大多有相同的方法,根據自己的文檔:

http://developer.android.com/reference/android/text/StaticLayout.html http://developer.android.com/reference/android/text/DynamicLayout.html

具體而言,我沒有看到一個方法setText()DynamicLayout類。

它們的區別是什麼?如何使用DynamicLayout計算文本不斷變化的佈局?

回答

11

爲了更新文本更改,DynamicLayout需要Spannable作爲第一個參數。在這種情況下,它會創建內部靜態類DynamicLayout.ChangeWatcher的實例,並將其附加到Spannable。 Spannable反過來需要實現可編輯以便更新。

實施例:

SpannableStringBuilder base = new SpannableStringBuilder("a"); 
DynamicLayout dynamicLayout = new DynamicLayout(base, base, paint, width, Alignment.ALIGN_NORMAL, 1.0, 0, true); 
int firstHeight = dynamicLayout.getHeight(); 
base.append("\nA"); 
int secondHeight = dynamicLayout.getHeight(); 
相關問題