文本视图返回错误的文本大小

问题描述:

我需要获取文本视图的文本大小,以便在用户按下按钮时增加文本大小,这表示它有助于增加文本视图中的文本大小。让我清楚我做了什么至今文本视图返回错误的文本大小

我有一个文本视图,并设置其文本大小通过扪文件夹

<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://*.com/a/6999195/4146722 –

问题是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

多数民众赞成在完美的答案,像一个魅力工作 –