2016-02-17 22 views
1

我正在嘗試更改Snackbar文字大小,因爲我希望它對於低視力的用戶易於閱讀。我寫這篇文章的方法來創建小吃吧Android Snackbar文字太大

private Snackbar getSnackbar(int msgId) { 
    final Snackbar snackbar = Snackbar.make(
      mView, 
      msgId, 
      Snackbar.LENGTH_LONG); 
    final View view = snackbar.getView(); 
    final TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text); 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.snackbar_textsize)); 
    return snackbar; 
} 

和相應的dimens.xml是:

<resources> 
    <dimen name="header_date_font_size">16sp</dimen> 
    <dimen name="snackbar_textsize">16sp</dimen> 
</resources> 

這是導致小吃吧的屏幕截圖。

enter image description here

爲什麼文字是如此之大?我曾預料過它會是通常的16sp大小,因爲它在我的應用程序中無處不在。

回答

5

getDimension()返回已應用其維度縮放因子的資源的值。因此,如果資源在「sp」中指定,則返回值是大小上的實際像素數。但是你將這個值提供給setText(),並且說實際上是以像素爲單位時,測量結果是「sp」。所以它應用另一個比例因子。

相反,只是說:

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.snackbar_textsize)); 
+0

對不起,遲到的回答檢查。謝謝,它工作! – c0rp