我是这个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" />
它在设计视图和所有内容中呈现,但属性viewportWidth
,viewportHeight
,fillColor
和pathData
都显示相同的警告:
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>
答案 0 :(得分:43)
问题
Intellisense无法选择我们输入的属性,尽管这些属性存在于android SDK中并且显示未声明此属性。
<强>解决方案强>
我昨天在Visual Studio 2015中遇到了这个问题,并开始搜索这个问题,最终我发现Visual Studio中的XML架构文件夹中缺少这两个文件,所以请下载下面给出的这些文件链接,
只需手动下载文件并将其移动到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)。必须在将来的版本中修复它。
答案 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
,将矢量包含在LinearLayout
和Button
的背景中:
<?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>
结果:
不是谷歌的一个很好的例子,但它确实有效。
清理矢量并将颜色设置为红色
<?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>
结果: