繁体   English   中英

Xamarin.Android:Android 5.x 不支持矢量资产

[英]Xamarin.Android: vector asset not supported by Android 5.x

我在一个Xamarin.Android项目上工作,我在其中创建了一个包含矢量资产作为背景的布局。

这工作正常,但在 Android 5.x 上,在实例化布局时出现异常“无法激活 JNI 句柄”。

我通过 Android Studio 从 a.svg 创建了矢量资产。

是否有另一种创建资产的方法,使其与 Android 5.x 兼容?

布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingHorizontal="@dimen/card_padding_horizontal"
    android:id="@+id/CardLayout">

    <ImageView
        android:id="@+id/CardBackgroundImageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:adjustViewBounds="true"
        android:src="@drawable/card_background"/>
    
    <!-- other items -->
</androidx.constraintlayout.widget.ConstraintLayout>

矢量资产如下所示:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt"
    android:width="349dp"
    android:height="211dp"
    android:viewportWidth="349"
    android:viewportHeight="211">
<path
    android:pathData="M19,0L330,0A16,16 0,0 1,346 16L346,190.39A16,16 0,0 1,330 206.39L19,206.39A16,16 0,0 1,3 190.39L3,16A16,16 0,0 1,19 0z">
    <aapt:attr name="android:fillColor">
    <gradient 
        android:startY="0"
        android:startX="3"
        android:endY="216.335"
        android:endX="339.608"
        android:type="linear">
        <item android:offset="0" android:color="#FF35373A"/>
        <item android:offset="0.337274" android:color="#FF5F6367"/>
        <item android:offset="0.591875" android:color="#FF5F6367"/>
        <item android:offset="0.929681" android:color="#FF35373A"/>
    </gradient>
    </aapt:attr>
</path>
<path
    android:pathData="M246.565,84.052C233.962,84.052 225.75,92.525 225.75,103.808C225.75,116.802 234.938,124.46 247.988,124.46C251.931,124.46 255.834,123.93 259.087,122.586L260.022,113.584C257.135,114.928 254.045,115.906 250.712,115.906C245.467,115.906 239.369,113.462 238.271,107.067H267.624C267.908,93.095 260.794,84.052 246.565,84.052ZM237.946,99.49C238.922,95.254 242.012,92.077 246.931,92.077C251.525,92.077 254.777,94.806 255.387,99.49H237.946Z"
    android:strokeAlpha="0.1"
    android:fillColor="#F7F8F9"
    android:fillAlpha="0.1"/>
</vector>

问题与矢量资产<gradient>属性有关。

为了修复它,我终于使用app:srcCompat而不是android:src来表示ImageView

<ImageView
    android:id="@+id/CardBackgroundImageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitCenter"
    android:adjustViewBounds="true"
    app:srcCompat="@drawable/card_background"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM