2016-12-16 46 views
0

如何設置TextView的文本大小,以便無論它是在平板電腦還是低分辨率手機上運行,它仍然會始終佔據相同的高度。我目前正在:如何調整TextView的大小,使文本在所有設備上的縮放比例相同

public float adjustSP(float sp) { 
    Resources r = getActivity().getApplicationContext().getResources(); 
    float density = r.getDisplayMetrics().density; 
    return sp/density; 
} 

然後,當我創建的文本視圖:

TextView textView = new TextView(activity); 
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 60.0f); 
textView.setText(message.getMessage()); 
textView.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, ScrollView.LayoutParams.WRAP_CONTENT)); 

但結果不一致且,說實話,有點古怪。在平板電腦上,它的尺寸合適 - 約爲屏幕的1/3,適用於中等數量的文本,但是在Nexus S仿真器上,它非常龐大 - 基本上每個屏幕只有1個字。

+0

你也可以使用這個庫:https://github.com/intuit/sdp。它非常易於使用,只需放置文本大小,邊距和填充就可以自動處理。 –

回答

0

請參考Android supporting multiple screen 我也建議你不要硬編碼的UI元素的寬度/高度

+0

謝謝,我已經提到它(實際上,我已經閱讀過,但我重新閱讀它以防萬一我失去了一些東西)。它根本不回答爲什麼上面的代碼不能實現密度獨立性的問題。另外,在上面的代碼中沒有寬度/高度的硬編碼。當然,我可以將SP移動到資源中,但讓我們繼續討論主題,好嗎?也許我會在基本層面上做到這一點。 – user3690202

0

有一些圖書館,如果你想嘗試的東西,例如autofittextview

+0

我認爲你得到我想要的東西,但它稍有不同。將文本自動擬合到文本視圖是一個相關但不同的問題。這並不是說我想要適應的潛在可變大小的文本視圖,而是我希望文本視圖中文本的大小始終與顯示的百分比相同。 – user3690202

1

爲你做這個文本視圖文本大小從不使用「dp」,而是使用「sp」。 也可以使用android的不同設備的dimens.xml來完成這項工作。

相關問題