Xamarin.Formsアプリケーションを開始したばかりで、XAMLに背景画像を追加したいと思います。属性を追加しましたが、実行しても表示されません!!こちらが画像です。
アプリ
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new Page();
}
XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
x:Class="App1.Page"
BackgroundImage="bg.png">
SO、どうすれば修正できますか?
現在使用しているAndroidエミュレーターはbg.png
プロジェクトで開始するため、各ネイティブプロジェクトにXamarin.Android
ファイルを追加します。
Android-イメージをResources/drawableディレクトリにビルドアクション:AndroidResourceで配置します
ref: https://developer.xamarin.com/guides/xamarin-forms/working-with/images/
例:Xamarin.Android
プロジェクトで、次のようにbg.png
を追加します。
その画像のBuild Action
を確認し、AndroidResource
が割り当てられていることを確認します。再構築して再テストします。
Xamarin.forms
画像は次のフォルダに配置する必要があります
iOS, Android - Resources folder
Windows/UWP, Windows Phone - Assets folder
次に、イメージのビルドアクション(rt click img-> properties)を次のように変更する必要があります
iOS - BundleResource Windows Phone - Content
Android - AndroidResource Windows/UWP - Content
それでも画像が表示されない場合は、画像のプロパティで出力ディレクトリにコピーして、新しい場合はコピーするを変更してみてください。
Xamarinプロジェクトのページ全体のXAMLファイルに背景画像を追加する場合は、BackgroundImageプロパティを使用して、画像をAndroidプロジェクトの下のリソース->ドローアブルフォルダーおよびiOSリソースに追加しますフォルダ。
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:PhoneDailerDemo"
x:Class="PhoneDailerDemo.MainPage"
BackgroundImage="image3.jpg">
<Label Text="Welcome to Xamarin Forms!"
VerticalOptions="Center"
HorizontalOptions="Center" />
<StackLayout Padding="100">
//..........
</StackLayout>
</ContentPage>
画像のサイズを小さくするとうまくいきました。
これを実現するもう1つの方法( source )は、イメージのビルドアクション(ファイルプロパティ)を埋め込みリソースとして設定することです。
次に、コンバーターマークアップ拡張機能を使用すると、XAMLで直接使用でき、各プラットフォーム固有のプロジェクトでファイルをコピーまたはリンクする必要がなくなります。
ポータブルプロジェクトに追加する必要があるコンバータは次のとおりです。
[ContentProperty(nameof(Source))]
public class ImageResourceExtension : IMarkupExtension
{
static readonly Assembly CurrentAssembly =
typeof(ImageResourceExtension).GetType().Assembly;
public const string Assets = nameof(Assets);
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (string.IsNullOrWhiteSpace(Source))
return null;
// Do your translation lookup here, using whatever method you require
var source = $"{CurrentAssembly.GetName().Name}.{Assets}.{Source}";
var imageSource = ImageSource.FromResource(source, CurrentAssembly);
return imageSource;
}
}
次に、XAMLで:
<?xml version="1.0" encoding="UTF-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.Microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:WorkingWithImages;Assembly=WorkingWithImages"
x:Class="WorkingWithImages.EmbeddedImagesXaml">
<Image Source="{local:ImageResource Background.jpg}"}
</ContentPage>
画像ファイルを各アプリケーションプロジェクトに追加し、Xamarin.Forms共有コードから参照できます。すべてのアプリで単一の画像を使用するには、すべてのプラットフォームで同じファイル名を使用する必要があり、有効なAndroidリソース名(つまり、小文字、数字、アンダースコア、および期間は許可されています)。
詳しくは 画像の操作Xamarin.Formsでの画像の読み込みと表示 をご覧ください。