如何缩放和居中一个drawable inside layer-list android?

时间:2016-10-27 00:30:05

标签: android xml android-layout splash-screen layer-list

我试图将可绘制的图像居中,并在两侧使用一些填充作为闪屏徽标。问题是,如果我使用gravity,它要么在整个屏幕上拉伸,要么忽略任何填充。

<?xml version="1.0" encoding="utf-8"?>

<item
    android:drawable="@color/grey_3"/>

<item android:gravity="top|center_horizontal|center_vertical" android:drawable="@drawable/zc_logo_r"
      android:top="100dp"
      android:left="200dp"
      android:right="200dp"
      android:layout_margin="100dp"
    >
</item>

我尝试在SO上使用位图android:gravity="fill_horizontal"和其他各种建议,结果相同。

如何在xml中缩放和居中图像?

2 个答案:

答案 0 :(得分:5)

对于任何可能遇到此问题的人,我最终通过更改为hdpi,mdpi,xhpi,xxhpi和xxxhdpi文件夹中的方形图像来解决此问题。 而不是试图调整太大而扭曲它的矩形图像。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
            >

    <item
        android:drawable="@color/grey_3"/>

    <item android:gravity="center">

            <bitmap
                android:src="@drawable/splash_logo"/>
    </item>

</layer-list>

答案 1 :(得分:0)

将可绘制图像转换为九个补丁可能最容易。

您遇到的问题是图层列表没有内在的大小概念。将边界放置在容器内时设置边界。 xml属性在编译时设置,因此很难在xml drawable中获取动态值。

如果你可以使用ImageView,那么你可以在src属性中设置你的drawable,并使用padding,margin和scaleType来控制drawable缩放的位置。