私はこれに初めてですAndroid開発、そして私はそれのレイアウトが本当に紛らわしいと思います。私はビューに背景画像を持っていると、この例を使ってみました 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>
問題
Intellisenseは入力した属性を選択できませんでしたが、これらの属性はAndroid SDKに存在し、この属性が宣言されていないことを示しています。
ソリューション
昨日Visual Studio 2015でこの問題が発生し、これについて検索を開始しました。最終的に、これら2つのファイルがVisual StudioのXMLスキーマフォルダーにないことがわかりました。
ファイルを手動でダウンロードしてC:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Xml\Schemasに移動するか、単にこれらのスキーマをVisual Studio内に追加するだけです。このエラーはなくなります。この手順でこの問題を解決しました。
私が知っているように、これらの属性(上で指摘した)はjdk_1.7で定義されていません。
代わりにjdk_1.8を使用します。
次の方法で、JDKへのパスを構成できます。
Microsoft Visual Studio 2015->ツール->オプション-> Xamarin-> Android Settings-> JDK Location [Change]
備考
Microsoft Visual Studio 2015 Update 3またはそれ以前のバージョンのいずれかを使用している場合、警告が消えることはありません...これはすでにIntellisenseの問題です(JDKの問題ではありません)。将来のリリースで修正する必要があります。
テンプレートベースのXamarin.Android
アプリを作成します。
Google/Android VectorDrawable docsから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>
結果:
Googleの見本ではありませんが、動作します。
ベクターをクリーンアップし、色を赤に設定します
<?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>
結果: