質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

2回答

2063閲覧

xamarin.androidでグラディエーションが入ったsvgファイルを背景に出来ない

TAKE_SS

総合スコア40

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2018/09/03 07:00

編集2018/09/06 02:43

###前提・実現したいこと
xamarin.Android でFragmentの背景にグラディエーションの入ったSVGファイルの画像を設定しようとしています
Android Studio でsvgファイルをxml化して(ベクターアセット)、表示確認した後xamarin.androidの方に組み込んだのですが、「inflater.Inflat....」のところで例外エラーになってしまいました。

レイアウトでグラディエーション部分を外すと例外にはなりません
xamarin.androidで何か設定等抜けているのでしょうか
xmlの編集の仕方を変更するなど含め、表示の仕方をご存じの方がいましたらご教授ください

###発生している問題
例外(Unhandled Exception)になる
Android.Views.InflateException: Binary XML file line #1: Error inflating class <unknown>

###該当のソースコード
<例外になった箇所>
以下の「inflater.Inflate~」呼び出し時」

lang

1public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 2{ 3 View view = base.OnCreateView(inflater, container, savedInstanceState); 4 var rootView = inflater.Inflate(Resource.Layout.layoutPS, container, false); 5 return rootView; 6}

<背景に設定しようとしたxml>

XML

1<vector xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:aapt="http://schemas.android.com/aapt" 3 android:width="720dp" 4 android:height="260dp" 5 android:viewportWidth="720" 6 android:viewportHeight="260"> 7 <path 8 android:pathData="M0,0h720v260h-720z"> 9 <aapt:attr name="android:fillColor"> 10 <gradient 11 android:startY="260" 12 android:startX="360.0005" 13 android:endY="4.882813E-4" 14 android:endX="360.0005" 15 android:type="linear"> 16 <item android:offset="0" android:color="#FF000000"/> 17 <item android:offset="0.04" android:color="#FF373A3C"/> 18 </gradient> 19 </aapt:attr> 20 </path> 21 <path 22 android:pathData="M20,215h680v33h-680z"> 23 <aapt:attr name="android:fillColor"> 24 <gradient 25 android:startY="248" 26 android:startX="360.0005" 27 android:endY="215" 28 android:endX="360.0005" 29 android:type="linear"> 30 <item android:offset="0" android:color="#FF333333"/> 31 <item android:offset="0.04" android:color="#FF000000"/> 32 </gradient> 33 </aapt:attr> 34 </path> 35 <path 36 android:pathData="M333,97h367v3h-367z" 37 android:fillColor="#FFFFFF"/> 38 <path 39 android:pathData="M300,96.667c0,5.154 -4.179,9.333 -9.333,9.333H29.333C24.179,106 20,101.821 20,96.667V22.333C20,17.179 24.179,13 29.333,13h261.333c5.155,0 9.333,4.179 9.333,9.333V96.667z" 40 android:strokeWidth="2" 41 android:fillColor="#00000000" 42 android:strokeColor="#FFFFFF"/> 43 <path 44 android:pathData="M420,198.666c0,5.155 -4.179,9.334 -9.334,9.334H29.333c-5.155,0 -9.333,-4.179 -9.333,-9.334v-74.333c0,-5.155 4.179,-9.333 9.333,-9.333h381.333c5.155,0 9.334,4.179 9.334,9.333V198.666z" 45 android:strokeWidth="2" 46 android:fillColor="#00000000" 47 android:strokeColor="#FFFFFF"/> 48 <path 49 android:pathData="M700,198.666c0,5.155 -4.179,9.334 -9.333,9.334H469.333c-5.154,0 -9.333,-4.179 -9.333,-9.334v-74.333c0,-5.155 4.179,-9.333 9.333,-9.333h221.334c5.154,0 9.333,4.179 9.333,9.333V198.666z" 50 android:strokeWidth="2" 51 android:fillColor="#00000000" 52 android:strokeColor="#FFFFFF"/> 53</vector> 54``` 55###試したこと 56・Android studioで表示実行 正常 57・xamarin.Androidで表示実行 例外エラー 58・gradient を含むPathを削除して表示 正常(当然グラディエーションなし) 59・「android:endY="4.882813E-4"」を「android:endY="0.0004"」に変更 例外エラー 60 61### 補足情報 62xamarin.Android、C# 使用 63ターゲットはAndroid 5.1 使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

とりあえず、仮想デバイスで確認してみたところ、
Android8.1:表示可能
Android6.0:例外異常
ということが分かりました。
Android Studioで作成したアプリならAndroid6.0やAndroid5.1でも表示可能なので、xamarin.androidの方の何かが未対応なのだと思います
(vectorやaapt:attrが関係しているのか、やはりgradientなのかは不明です)

Pathでの編集以外を含め、xmlの編集の仕方を調査してみることにします。。。

投稿2018/09/06 04:08

編集2018/09/06 04:11
TAKE_SS

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

公式ドキュメントにこのように書かれています。

VectorDrawable  |  Android Developers

android:fillColor

Specifies the color used to fill the path. May be a color or, for SDK 24+, a color state list or a gradient color (See R.styleable.GradientColor and R.styleable.GradientColorItem). If this property is animated, any value set by the animation will override the original value. No path fill is drawn if this property is not specified.

gradientは、Android 7.0以上でないと使えないようです。

投稿2018/09/04 11:28

編集2018/09/04 11:30
f-miyu

総合スコア1625

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TAKE_SS

2018/09/05 02:45

回答ありがとうございます ですが、単にボタンの背景でgradientは使えています。 また、Android studioでは表示出来るので、xamarin.androidで なにか設定かが必要か、もしくはxmlの記述がxamarinようになにか 変更が必要なのでは無いかと疑っているのですが。
f-miyu

2018/09/05 05:43

確かにAndroid studioでは表示できるので、Xamarinの問題な気がします。 しかしながら、色々調べてみたのですが、解決できず。 お役に立てなくて申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問