我有一个文字视图:
<TextView
android:id="@+id/attribution"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/creative_commons"
android:textColor="@color/white"
android:textSize="32sp"
android:textStyle="bold" >
</TextView>
在xhdpi上它很好地显示在一行:
Creative Commons Attribution 3.0许可下使用的声音
然而,在hdpi中,它看起来像这样:
知识共享署名3.0下使用的声音
许可证
我认为sp
(如在32sp
中)应该处理屏幕密度
我需要做些什么才能纠正这个问题?
提出以下几点建议:
使用dp
没有任何区别。这并不奇怪,因为sp
是dp
+用户字体首选项
使用singleLine
确实会将它强制到一行,然后在屏幕上运行。
答案 0 :(得分:1)
解决此问题的一种方法是使用Android资源限定符机制。您可以为具有不同尺寸的屏幕指定替代布局。我认为32sp对于你的机箱中显示较小的设备来说太大了。以下是使用Android资源限定符修复它的方法:
请注意,480x800 mdpi的屏幕选择“480”。对于240x320 ldpi,320x480 mdpi或480x800 hdpi的手机,您可以使用“320”。
如果您需要详细信息,请参阅http://developer.android.com/guide/practices/screens_support.html。
希望它有所帮助!
答案 1 :(得分:0)
SP类似于DP,但进一步修改为文本大小细节,如用户设置。
但是,DP / SP是“括号”,并且许多分辨率和屏幕尺寸都适合这些相同的括号,并且结果尺寸并不总是完全适合。
因此,您应该专注于使布局自适应,如果您将应用程序本地化,则尤其如此,因为文本在其他语言中的长度不同。