我正在我的应用程序顶部创建一个栏,与上面的栏非常相似。
图形嵌入到背景中,代表级别的数字等使用 TextView。
如您所见,TextView 必须像素(dp) 完美适合白条的中心。通过一些边距或填充我可以实现这一点。
但是这样的游戏如何在所有设备上保持相同的像素完美呢?
我了解资源限定符等,但同一存储桶中的某些设备具有不同的大小。
有没有好的方法或技巧可以在大多数设备上实现完美居中?
最佳答案
一般来说,只要您以相对单位执行所有操作并为每个屏幕尺寸包含 9 block 或图像,Android 就会处理跨设备的相对尺寸。
对于如何处理附加到 TextView
的图像的问题,您可以通过几种方法来完成。
TextView
将允许您在顶部、底部、左侧和右侧附加一个可绘制对象。您可以使用各种 setCompoundDrawable*
的代码来完成此操作方法。例如,这将在 TextView
的右侧和左侧添加一个可绘制对象。
txtScore.setCompoundDrawables(R.drawable.imageLeft, null, R.drawable.imageRight, null)
您还可以使用 XML 中的drawableLeft 等属性来执行此操作。您可能需要弄乱可绘制对象的填充和边界。
<TextView
android:id="@+id/txtScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableLeft="@drawable/imageLeft"
android:drawableRight="@drawable/imageRight"
android:drawablePadding="10dp"
android:singleLine="true"
android:text="125"/>
如果您查看 TextView
的 setCompoundDrawable 类型 API,代码中也会有许多不同的选项。
您的另一种选择是创建您自己的View
,它会为您完成所有工作,但如果您只在一个地方使用它,则可能有点过分了。
同样,您确实需要考虑 9 block 图像或为可绘制文件夹中的每个屏幕尺寸创建图像。这将允许 Android 确定每个设备使用哪个图像。
关于java - Android 像素完美对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319163/