3

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

我有一个文本视图并通过 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"
            />

为了支持我的文本视图文本大小到所有屏幕大小,我制作了不同的dimen文件夹并设置文本大小如下

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

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

但是当我通过 java 获得文本视图的大小时,它会返回错误的文本大小。这里见下面何我正在获取文本大小

float textSize = tvContentString.getTextSize();

但这给我返回了 textview 的错误文本大小。

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

但是当我检索文本大小时,它是其他东西,例如对于平板电脑,我已将其设置为 32sp,但它正在检索我 42,因此在 42+1 中进行增量使其变为 43,当我将其设置为按钮时,它看起来很尴尬。

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

4

1 回答 1

8

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

tvContentString.setTextSize(TypedValue.COMPLEX_UNIT_SP, new_size);

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

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

代码取自这里

于 2016-03-07T11:59:08.780 回答