web-dev-qa-db-ja.com

Xamarin.Forms Xaml背景画像

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">

enter image description here

SO、どうすれば修正できますか?

enter image description here

8
Biellx

現在使用しているAndroidエミュレーターはbg.pngプロジェクトで開始するため、各ネイティブプロジェクトにXamarin.Androidファイルを追加します。

Android-イメージをResources/drawableディレクトリにビルドアクション:AndroidResourceで配置します

ref: https://developer.xamarin.com/guides/xamarin-forms/working-with/images/

例:Xamarin.Androidプロジェクトで、次のようにbg.pngを追加します。

enter image description here

その画像のBuild Actionを確認し、AndroidResourceが割り当てられていることを確認します。再構築して再テストします。

6
SushiHangover

Xamarin.forms

  1. 画像は次のフォルダに配置する必要があります

       iOS, Android  - Resources folder 
    
       Windows/UWP, Windows Phone  - Assets folder 
    
  2. 次に、イメージのビルドアクション(rt click img-> properties)を次のように変更する必要があります

    iOS - BundleResource             Windows Phone - Content
    
    Android - AndroidResource        Windows/UWP - Content
    

それでも画像が表示されない場合は、画像のプロパティで出力ディレクトリにコピーして、新しい場合はコピーするを変更してみてください。

4
D.vijay

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>
2
Prabhat Maurya

画像のサイズを小さくするとうまくいきました。

1
Richard Long

これを実現するもう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>
1
Shimmy

画像ファイルを各アプリケーションプロジェクトに追加し、Xamarin.Forms共有コードから参照できます。すべてのアプリで単一の画像を使用するには、すべてのプラットフォームで同じファイル名を使用する必要があり、有効なAndroidリソース名(つまり、小文字、数字、アンダースコア、および期間は許可されています)。

  • iOS-Build Action:BundleResourceを使用して、Resourcesフォルダーに画像を配置します。画像のRetinaバージョンも提供する必要があります-ファイル拡張子の前にファイル名に@ 2xまたは@ 3xサフィックスが付いた解像度の2および3倍(例:[email protected])。
  • Android-Build Action:AndroidResourceを使用して、Resources/drawableディレクトリに画像を配置します。画像の高DPIバージョンと低DPIバージョンを提供することもできます(適切に名前が付けられたResourcesサブディレクトリ(drawable-ldpi、drawable-hdpi、およびdrawable-xhdpi)。
  • Windows Phone-Build Action:Contentを使用して、アプリケーションのルートディレクトリに画像を配置します。
  • Windows/UWP-Build Action:Contentを使用して、アプリケーションのルートディレクトリに画像を配置します。

詳しくは 画像の操作Xamarin.Formsでの画像の読み込みと表示 をご覧ください。

0