如何从小部件上的 TextView 获取默认文本大小?
How to get default text size from TextView on widget?
我有一个带 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 的大小文本:
TextView defaultTextView = new TextView(context);
float sourceTextSize = defaultTextView.getTextSize();
并且 sourceTextSize 包含 21。但这是错误的值,因为如果我使用 remoteViews.setFloat(R.id.textView, "setTextSize", 21)
设置它,它会使我的文本变大。
如何获取小部件上TextView的默认文本大小?
从你的角度来看你是对的。当您从默认文本视图中获取时,它将 return sp 值。因为默认的 textsize 格式是 sp。当你用 21 设置它时,它会用像素设置。所以尺寸随屏幕尺寸而变化。
尝试使用不同尺寸的设备进行试验。
希望你明白。
实际上 defaultTextView.getTextSize() returns 大小以像素为单位,setTextSize(size) 将输入作为 sp,因此您的文本会变大。因此不是直接设置文字大小,而是先根据密度转换。
float sourceTextSize = defaultTextView.getTextSize();
TextView.setTextSize(sourceTextSize / getResources().getDisplayMetrics().density);
此处,getResources().getDisplayMetrics().density 将 returns 屏幕密度作为-
0.75 - ldpi
1.0 - mdpi
1.5 - hdpi
2.0 - xhdpi
3.0 - xxhdpi
4.0 - xxxhdpi
我有一个带 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 的大小文本:
TextView defaultTextView = new TextView(context);
float sourceTextSize = defaultTextView.getTextSize();
并且 sourceTextSize 包含 21。但这是错误的值,因为如果我使用 remoteViews.setFloat(R.id.textView, "setTextSize", 21)
设置它,它会使我的文本变大。
如何获取小部件上TextView的默认文本大小?
从你的角度来看你是对的。当您从默认文本视图中获取时,它将 return sp 值。因为默认的 textsize 格式是 sp。当你用 21 设置它时,它会用像素设置。所以尺寸随屏幕尺寸而变化。
尝试使用不同尺寸的设备进行试验。
希望你明白。
实际上 defaultTextView.getTextSize() returns 大小以像素为单位,setTextSize(size) 将输入作为 sp,因此您的文本会变大。因此不是直接设置文字大小,而是先根据密度转换。
float sourceTextSize = defaultTextView.getTextSize();
TextView.setTextSize(sourceTextSize / getResources().getDisplayMetrics().density);
此处,getResources().getDisplayMetrics().density 将 returns 屏幕密度作为-
0.75 - ldpi
1.0 - mdpi
1.5 - hdpi
2.0 - xhdpi
3.0 - xxhdpi
4.0 - xxxhdpi