该属性未在基本xml属性上声明(Android)

时间:2016-05-05 16:32:48

标签: android xml xamarin

我是这个Android开发的新手,我发现它的布局真的令人困惑。我正在尝试在视图上显示背景图像,并且我尝试使用此示例 Add a background image to shape in xml Android,但看起来很糟糕(你知道位图)

所以我认为矢量可能很有趣。唯一的问题是我甚至无法获得官方的例子。我已经尝试将其设置为背景

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="256dp"
    android:width="256dp"
    android:viewportWidth="32"
    android:viewportHeight="32">
<path android:fillColor="#8fff" android:pathData="M20.5,9.5
                  c-1.955,0,-3.83,1.268,-4.5,3
                  c-0.67,-1.732,-2.547,-3,-4.5,-3
                  C8.957,9.5,7,11.432,7,14
                  c0,3.53,3.793,6.257,9,11.5
                  c5.207,-5.242,9,-7.97,9,-11.5
                  C25,11.432,23.043,9.5,20.5,9.5z" />

它在设计视图和所有内容中呈现,但属性viewportWidthviewportHeightfillColorpathData都显示相同的警告:

The 'http://schemas.android.com/apk/res/android:viewportWidth' is not declared

如果我检查文件,果然,它不在那里。这是否意味着我必须明确声明所有这些类型?对于香草的例子来说,这似乎有点奇怪。

请注意,如果我删除警告前面的“android”,它会删除警告,但仍会给我相同的部署错误

Android.Views.InflateException: Binary XML file line #1: Error inflating class <unknown>

3 个答案:

答案 0 :(得分:43)

问题

Intellisense无法选择我们输入的属性,尽管这些属性存在于android SDK中并且显示未声明此属性。

<强>解决方案

我昨天在Visual Studio 2015中遇到了这个问题,并开始搜索这个问题,最终我发现Visual Studio中的XML架构文件夹中缺少这两个文件,所以请下载下面给出的这些文件链接,

  1. https://github.com/atsushieno/monodroid-schema-gen/blob/master/android-layout-xml.xsd
  2. https://github.com/atsushieno/monodroid-schema-gen/blob/master/schemas.android.com.apk.res.android.xsd
  3. 只需手动下载文件并将其移动到C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Xml \ Schemas,或者只是在Visual Studio中添加这些模式。此错误将消失,我通过此过程解决了此问题。

答案 1 :(得分:3)

据我所知,这些属性(您在上面指出的)未在jdk_1.7 中定义。

改用jdk_1.8。

您可以通过以下方式配置JDK的路径:

Microsoft Visual Studio 2015 - &gt;工具 - &gt;选项 - &gt; Xamarin - &gt; Android设置 - &gt; JDK位置[更改]

<强>备注

如果您使用的是Microsoft Visual Studio 2015 Update 3或其中一个早期版本,我向您保证警告不会消失......这已经是Intellisense的问题(而不是JDK)。必须在将来的版本中修复它。

Screenshot

答案 2 :(得分:1)

创建基于模板的Xamarin.Android应用

从Google / Android VectorDrawable文档中获取vector.xml示例,并将其创建为项目中.xml目录下的Resources/drawable文件:

<?xml version="1.0" encoding="UTF-8" ?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="64dp"
     android:width="64dp"
     android:viewportHeight="600"
     android:viewportWidth="600" >
     <group
         android:name="rotationGroup"
         android:pivotX="300.0"
         android:pivotY="300.0"
         android:rotation="45.0" >
         <path
             android:name="v"
             android:fillColor="#000000"
             android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
     </group>
 </vector>

更新您的Resouce/layout/Main.axml,将矢量包含在LinearLayoutButton的背景中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
        android:background="@drawable/vector"
        >
    <Button
        android:id="@+id/myButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:background="@drawable/vector"
        />
</LinearLayout>

结果:

enter image description here

不是谷歌的一个很好的例子,但它确实有效。

清理矢量并将颜色设置为红色

<?xml version="1.0" encoding="UTF-8" ?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:height="256dp"
     android:width="256dp"
     android:viewportHeight="60"
     android:viewportWidth="60" >
     <group
         android:name="rotationGroup"
         android:pivotX="0.0"
         android:pivotY="0.0"
         android:rotation="0.0" >
        <path
            android:name="so"
            android:fillColor="#F44336"
            android:pathData="M20.5,9.5
              c-1.955,0,-3.83,1.268,-4.5,3
              c-0.67,-1.732,-2.547,-3,-4.5,-3
              C8.957,9.5,7,11.432,7,14
              c0,3.53,3.793,6.257,9,11.5
              c5.207,-5.242,9,-7.97,9,-11.5
              C25,11.432,23.043,9.5,20.5,9.5z" />
     </group>
 </vector>

结果:

enter image description here