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

All*_*lil 2 android textview android-textattributes

我需要获取文本视图的文本大小,以便在用户按下按钮时增加文本大小,这表示它有助于增加文本视图中的文本大小.让我明白到目前为止我所做的一切

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

 <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"
            />
Run Code Online (Sandbox Code Playgroud)

相应地支持我的文本视图文本大小到所有屏幕尺寸我已经做了不同的dimen文件夹并设置文本大小如下

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

因此对于平板电脑等大型设备来说它是32sp.

但是当我通过java获得文本视图的大小时,它返回错误的文本大小.在这里看到吼叫何我得到的文字大小

float textSize = tvContentString.getTextSize();
Run Code Online (Sandbox Code Playgroud)

但是这会让我错误地返回textview的文本大小.

请建议我,如何在文本视图中显示确切的文本大小.因为我想在按钮按下增加文本大小所以为此我需要检索文本的实际大小,即如果文本大小是32我想要增加它32 + 1 = 3sp

但是,当我检索文本大小时,它是其他一些东西,例如平板电脑,我已经设置了32sp,但是它正在检索我42,所以在42 + 1中增加它的43,当我按下按钮按下它看起来很尴尬.

请帮忙 !!!如何获得真实文本大小.??

Jyo*_*ngh 6

问题是getTextSize()返回像素的大小,而不是sp.所以你可以先将像素转换为sp然后 -

tvContentString.setTextSize(TypedValue.COMPLEX_UNIT_SP, new_size);
Run Code Online (Sandbox Code Playgroud)

要将像素转换为sp,请使用此 -

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

代码来自这里.