如何从小部件上的TextView获取默认文本大小? [英] How to get default text size from TextView on widget?

查看:71
本文介绍了如何从小部件上的TextView获取默认文本大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有TextView的主屏幕小部件:

I have a home screen widget with TextView:

<TextView
      android:id="@+id/textView"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:ellipsize="none"
      android:singleLine="true"
      android:textStyle="bold" />

我需要获取此文本的大小.我正在尝试获取像这样的默认TextView大小的文本:

I need to get the size of this text. I am trying to get default TextView's size text like this:

TextView defaultTextView = new TextView(context);
float sourceTextSize = defaultTextView.getTextSize();

sourceTextSize包含21.但这是错误的值,因为如果我使用remoteViews.setFloat(R.id.textView, "setTextSize", 21)进行设置,它将使我的文本变大.

And sourceTextSize contains 21. But that is wrong value, because if I set this using remoteViews.setFloat(R.id.textView, "setTextSize", 21), it makes my text bigger.

如何在小部件上获取TextView的默认文本大小?

How to get default text size of TextView on widget?

推荐答案

实际上defaultTextView.getTextSize()返回以像素为单位的大小,而setTextSize(size)将输入作为sp,因此您的文本变大了.因此,与其直接设置文本大小,不如先根据密度进行转换.

Actually defaultTextView.getTextSize() returns size in pixels and setTextSize(size) takes input as sp, So your text becomes bigger. Thus instead of directly setting up the text size, first convert them according to density.

float sourceTextSize = defaultTextView.getTextSize();
TextView.setTextSize(sourceTextSize / getResources().getDisplayMetrics().density);

在这里,getResources().getDisplayMetrics().density将屏幕密度返回为-

Here, getResources().getDisplayMetrics().density will returns the screen density as-

0.75-ldpi

0.75 - ldpi

1.0-mdpi

1.5-hdpi

2.0-xhdpi

2.0 - xhdpi

3.0-xxhdpi

3.0 - xxhdpi

4.0-xxxhdpi

4.0 - xxxhdpi

屏幕密度

这篇关于如何从小部件上的TextView获取默认文本大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆