图层列表中的Vector Drawable正在拉伸

时间:2019-04-18 14:33:10

标签: android xml android-vectordrawable

当我使用内部带有vector-drawable的图层列表时,它在API 23+上可以正常工作,但不是在以前。

我启用了vectorDrawables.useSupportLibrary = trueAppCompatDelegate.setCompatVectorFromResourcesEnabled(true),但是可绘制对象却非常拉伸。

Left is Oreo 26 and right is Lollipop 21

左为Oreo 26,右为Lollipop 21

这是可绘制对象

<layer-list>
            <item>
                <shape>
                    <stroke android:width="0.9dp" android:color="@color/colorPrimaryDark" />
                    <solid android:color="#FFF" />
                    <corners android:radius="16dp" />
                </shape>
            </item>

            <item android:drawable="@drawable/arrow_drawable" android:gravity="center_vertical|left" android:left="18dp" />
        </layer-list>

这是可绘制对象的应用

<Spinner
        android:id="@+id/countrySpinner"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@drawable/spinner_background"
        android:popupBackground="@drawable/spinner_dropdown_background"
        android:popupElevation="4dp"
        app:popupTheme="@style/PopupTheme"
        app:layout_constraintBottom_toTopOf="@id/citySpinner"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintWidth_percent="0.8" />

它在ConstraintLayout中,但是我不能发布整个布局文件。

我该如何解决可扩展的Pre API 23? 在代码中创建整个图层列表会有所不同吗?

编辑:我之前曾经尝试过,但是忘记添加了。 我确实尝试了以下xml

<layer-list>
            <item>
                <shape>
                    <stroke android:width="0.9dp" android:color="@color/colorPrimaryDark"/>
                    <solid android:color="#FFF"/>
                    <corners android:radius="16dp"/>
                </shape>
            </item>

            <item android:left="18dp">
                <bitmap android:src="@drawable/arrow_drawable" android:gravity="center_vertical|left"/>
            </item>
        </layer-list>

但这会使应用程序在开始说android.content.res.Resources$NotFoundException: File res/drawable/spinner_background.xml from drawable resource ID #0x7f0700de时崩溃,这可能不是很有意义。这就是Android Studio中的预览显示的内容

enter image description here

2 个答案:

答案 0 :(得分:0)

不确定,但也许

app:layout_constraintWidth_percent="0.8" 

android:layout_width="0dp"

使宽度占其父级的80%

答案 1 :(得分:0)

documentation for layer-list drawables指出:

  

默认情况下,所有可绘制项目的大小都会缩放到适合包含View的大小。因此,将图像放置在图层列表中的不同位置可能会增加“视图”的大小,并且某些图像会适当缩放。为了避免缩放列表中的项目,请在nsim元素内使用<bitmap>元素来指定可绘制对象,并将重力定义为不可缩放的对象,例如<item>

尝试一下:

"center"