Reputation: 660
I'm new to this Android development, and I find the layout of it really confusing. I'm trying to have a background image on a view, and I've tried using this example Add a background image to shape in xml Android, but it looks very bad (bitmaps you know)
So I thought vectors could be fun. Only problem is that I cannot get even the official examples to work. I've tried setting this as a background
<?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" />
It renders in the design view and all, but the attributes viewportWidth
, viewportHeight
, fillColor
and pathData
all show the same warning:
The 'http://schemas.android.com/apk/res/android:viewportWidth' is not declared
If I check the file, sure enough, it's not there. Does that mean I have to explicitly declare all those types? It seems a bit odd for vanilla examples.
Note that if I remove the 'android' in front of the warnings, it will remove warnings but still give me the same deployment error
Android.Views.InflateException: Binary XML file line #1: Error inflating class <unknown>
Upvotes: 26
Views: 28136
Reputation: 2577
Problem
Intellisense could not pick the attributes we type although those attributes are existing in android SDK and shows this Attribute is not declared.
Solution
I got this problem yesterday in Visual Studio 2015 and started searching about this, ultimately I found that these two files are missing in XML schema folder in Visual Studio, so download these files links given below,
Just download and move files manually to C:\Program Files (x86)\Microsoft Visual Studio 14.0\Xml\Schemas or simply just add these schemas within Visual Studio. This error will be gone, I resolved this issue with this procedure.
Upvotes: 43
Reputation: 2634
As I know, those attributes (that you pointed out above) aren't defined in jdk_1.7.
Use jdk_1.8 instead.
You can configure the path to the JDK in the following way:
Microsoft Visual Studio 2015 -> Tools -> Options -> Xamarin -> Android Settings -> JDK Location [Change]
Remark
If you are using Microsoft Visual Studio 2015 Update 3 or one of the earlier versions, I assure you that the warning won't disappear... this is already the Intellisense's issue (not the JDK's). It has to be fixed in the future release.
Upvotes: 3
Reputation: 74174
Create a template-based Xamarin.Android
app.
Taking the vector.xml
example from the Google/Android VectorDrawable docs and creating that as a .xml
file under the Resources/drawable
directory in the project:
<?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>
Update your Resouce/layout/Main.axml
to include the vector on the background of the LinearLayout
and the 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>
Results in:
Not a pretty example from Google, but it works.
Cleaning up your vector and setting the color to red
<?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>
Results in:
Upvotes: 1