我正在我的应用程序顶部创建一个像上面那样的栏。
图形嵌入到背景中,代表关卡等的数字使用TextViews。
正如您所看到的, TextView 必须是像素(dp),以适应白色条形图的中心。有了一些边距或填充,我可以实现这一点。
但是这样的游戏如何在所有设备上保持相同的像素完美?
我知道资源限定符等,但同一个存储桶中的某些设备有不同的大小。
在大多数设备上实现完美居中是否有好方法或技巧?
答案 0 :(得分:0)
一般情况下,Android会处理设备之间的相对大小,只要您以相对单位执行所有操作,并为每个屏幕大小包含9个修补程序或图像。
关于如何处理附加到TextView
的图像的问题,您可以通过以下几种方式实现此目的。
TextView
允许您在顶部,底部,左侧和右侧附加一个drawable。您可以使用各种setCompoundDrawable*
方法使用代码执行此操作。例如,这会在TextView
的右侧和左侧添加一个drawable。
txtScore.setCompoundDrawables(R.drawable.imageLeft,null,R.drawable.imageRight,null)
您也可以使用 drawableLeft 等属性在XML中执行此操作。你可能需要弄清楚drawables的填充和边界。
<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补丁图像或为可绘制文件夹中的每个屏幕尺寸创建图像。这将允许Android确定每个设备使用哪个图像。