Android Pixel完美对齐

时间:2014-08-14 23:29:59

标签: java android xml

enter image description here

我正在我的应用程序顶部创建一个像上面那样的栏。

图形嵌入到背景中,代表关卡等的数字使用TextViews。

正如您所看到的, TextView 必须是像素(dp),以适应白色条形图的中心。有了一些边距或填充,我可以实现这一点。

但是这样的游戏如何在所有设备上保持相同的像素完美?

我知道资源限定符等,但同一个存储桶中的某些设备有不同的大小。

在大多数设备上实现完美居中是否有好方法或技巧?

1 个答案:

答案 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确定每个设备使用哪个图像。