2016-03-07 29 views
1

我需要獲取文本視圖的文本大小,以便在用戶按下按鈕時增加文本大小,這表示它有助於增加文本視圖中的文本大小。讓我清楚我做了什麼至今文本視圖返回錯誤的文本大小

我有一個文本視圖,並設置其文本大小通過捫文件夾

<TextView 
      android:id="@+id/tv_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="2dp" 
      android:text="@string/flash" 
      android:textSize="@dimen/tv_text_fontsize" 
      android:gravity="fill_horizontal" 
      /> 

支持我的文本視圖文本大小,以所有屏幕尺寸因此我已經diferent捫文件夾,並設置文字大小如下

<dimen name="tv_text_fontsize">32sp</dimen>

所以這是大型設備32sp如平板電腦。

但是當我通過java獲得文本視圖的大小時,它返回了錯誤的文本大小。這裏看到以下吼何何我得到的文字大小

float textSize = tvContentString.getTextSize(); 

但這是返回我錯誤的textview文本大小。

請給我建議,我怎樣才能得到文本視圖中顯示的確切文字大小。因爲我想在按鈕上按文字大小遞增,因此我需要檢索文本的實際大小,即如果文本大小是32我想增加它32 + 1 = 3sp

但是當我檢索文字大小它是一些其他的東西,比如我爲它設置了32sp的平板電腦,但它正在檢索我42,因此在42 + 1中增加了43,當我將它設置在按鈕上時,它看起來很尷尬。

請幫忙!!!我怎樣才能得到真正的文字大小。 ??

+0

看到這個http://stackoverflow.com/a/6999195/4146722 –

回答

5

問題是getTextSize()以像素爲單位返回大小,而不是以sp爲單位。所以,你可以轉換像素SP首先然後 -

tvContentString.setTextSize(TypedValue.COMPLEX_UNIT_SP, new_size); 

從像素轉換爲SP利用這一點 - 從here採取

public static float pixelsToSp(Context context, float px) { 
    float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity; 
    return px/scaledDensity; 
} 

代碼。

+0

多數民衆贊成在完美的答案,像一個魅力工作 –

相關問題