我正在编写Android应用。我基本上创建了以下dimen
资源:
<dimen name="button_text_size">11pt</dimen>
我在我的xml和Java代码中使用它来创建Button
和TextView
,文本大小为11pt。我是这样做的:
XML
<Button
android:layout_width="match_parent"
android:layout_height="0dp"
android:textSize="@dimen/button_text_size"
android:text="secret!"
android:layout_margin="@dimen/button_margin"
android:background="secret!"
android:layout_weight="1"
android:onClick="secret!"/>
Java代码
TextView text = new TextView (this);
text.setLayoutParams (new LinearLayout.LayoutParams (0, ViewGroup.LayoutParams.WRAP_CONTENT, 3));
text.setText (secret);
text.setTextSize (getResources().getDimension (R.dimen.button_text_size));
理论上,两个视图的文本应该是相同的大小。但文本视图的文本大小似乎更大!我不知道为什么会这样。我想这是因为单位的一些问题,但实际发生了什么?如何获得正确的值?
答案 0 :(得分:2)
试试这个
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.button_text_size));
最好根据android文档使用sp(&#34;缩放像素&#34;)作为文本大小 http://developer.android.com/intl/es/reference/android/widget/Button.html
答案 1 :(得分:1)
使用dp or dip
代替pt
<dimen name="button_text_size">11dp</dimen>
答案 2 :(得分:0)
dp / dip:与密度无关的像素 - 基于的抽象单位 屏幕的物理密度。这些单位相对于160 dpi (每英寸点数)屏幕,1dp大致等于1px。什么时候 在更高密度的屏幕上运行,用于绘制的像素数 1dp按照适合屏幕dpi的因子放大。 同样,在较低密度屏幕上时,使用的像素数 1dp按比例缩小。
另一方面
点数:点数 - 基于屏幕物理尺寸的1/72英寸。
px:Pixels - 对应于屏幕上的实际像素。这个单位 不推荐使用度量,因为实际表示可能会有所不同 跨设备;
所以 pt和px会因屏幕而异,而dp ** / dip会根据屏幕进行管理。** ..如果你想在不同的屏幕上保持一致的尺寸而不是dp / dip
有关DIMENSIONS的更多信息refer
因此,在XML中从11pt变为11dp会有所帮助
但动态地将它视为px的浮动值...所以请按照
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.button_text_size));
请选择以下某个值。
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,getResources().getDimension(R.dimen.button_text_size));
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP,getResources().getDimension(R.dimen.button_text_size));