我需要TextSize
单位中TextView
的当前sp
。
但getTextSize()
会返回pixels
中的大小。有没有办法convert pixels to sp
?
答案 0 :(得分:136)
使用此
public static float pixelsToSp(Context context, float px) {
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}
如果您想测试此方法是否正常,请使用此代码段
XML
<TextView
android:id="@+id/txtHelloWorld"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
<TextView
android:id="@+id/txtHelloWorld2"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
爪哇
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView helloWorldTextView = (TextView) rootView.findViewById(R.id.txtHelloWorld);
TextView helloWorldTextView2 = (TextView) rootView.findViewById(R.id.txtHelloWorld2);
helloWorldTextView2.setTextSize(pixelsToSp(getActivity(), helloWorldTextView.getTextSize()));
TextView的字体大小应该相同。
答案 1 :(得分:32)
请参阅DisplayMetrics课程,其中包含densityDpi
和scaledDensity
的字段。
使用示例:
float sp = px / getResources().getDisplayMetrics().scaledDensity;
答案 2 :(得分:5)