文本视图返回错误的文本大小
我需要获取文本视图的文本大小,以便在用户按下按钮时增加文本大小,这表示它有助于增加文本视图中的文本大小。让我清楚我做了什么至今文本视图返回错误的文本大小
我有一个文本视图,并设置其文本大小通过扪文件夹
<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,当我将它设置在按钮上时,它看起来很尴尬。
请帮忙!!!我怎样才能得到真正的文字大小。 ??
问题是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;
}
代码。
多数民众赞成在完美的答案,像一个魅力工作 –
看到这个http://stackoverflow.com/a/6999195/4146722 –