クロスプラットフォームプロジェクトにXamarin.Formsを使用していますが、GoogleサインインボタンにGoogleドローアブルの9パッチ画像を使用する必要があります

イビカ

https://baskren.github.io/Forms9Patch/を使ってみたのですが、よくわからない気がます

誤解しないでください、ツールは9patch画像を引き伸ばすのに最適です。Googleのブランドガイドラインに基づいてボタンを正しく表示できないだけです。

https://developers.google.com/identity/branding-guidelines

見た目

そして、これが私が使用しているドローアブルです:https//developers.google.com/identity/images/signin-assets.zip

さまざまなボタンの試行と寸法の結果は次のとおりです

これは私が欲しいボタンに最も近くなったコードです

 <f9p:Button  Text = "Sign in with xxhdpi"
                     TextColor="White"
                     FontSize="14"
                     FontFamily="sans-serif-medium"
                     WidthRequest="60"
                     >
            <f9p:Button.BackgroundImage>
                <f9p:Image Source="{local:ImageMultiResource TestingApp.Resources.Images.btn_google_signin_dark_normal_xxhdpi}"/>
            </f9p:Button.BackgroundImage>


        </f9p:Button>

画像とボタンのあるグリッドも使ってみましたが、うまくいきませんでした。

誰かが私を正しい方向に向けてくれるといいですね。

バスクレン

私は実際にこれを以前に行ったことがあります。これが私がしたことの一般的な概要です:

  1. マルチプラットフォームアイコンファイルを埋め込みリソースとして.NetStandardプロジェクトに配置しますこれは、Googleが提供するさまざまな解像度(_xxhdpi、_xhdpi、_hdpi、_mdpiなど)をすべて見つけて、名前を次のように変更したことを意味します。

    次に、それらをプロジェクトのResources / Googleフォルダー(FormsFirebase.Ui)に配置します。したがって、たとえば、上記のリストの最初のファイルのEmbeddedResourceIdはFormsFirebase.Ui.Resources.Google.icon@¾x.pngです。

    Forms9Patch.Buttonすぐにわかるように、上記のようにこれらのファイルの名前を変更すると、適切な画面解像度に適切な画像を選択できるようになり(見栄えが良くなります)、これを管理する必要がなくなります。同様に、それらを.NetStandardプロジェクトに配置すると、すべてのプラットフォームで使用できるようになり、これを何度も理解する必要がなくなります。

  2. あなたにはForms9Patch.Button、解像度に依存しない形で上記のアイコン画像を参照してください。これはいくつかの方法で行うことができます。より冗長な方法の1つは次のとおりです。

    var myButton = new Forms9Patch.Button
    {
        Text = "Sign in with xxhdpi",
        TextColor=Color.White,
        FontSize=14,
        FontFamily="sans-serif",
        WidthRequest=60,
        IconImage = new Forms9Patch.Image
        {
            Source = Forms9Patch.ImageSource.FromMultiResource("FormsFirebase.Ui.Resources.Google.icon", GetType().Assembly),
            Padding = 1,
        },
        Spacing = 4,
        TintIcon = false,
        BackgroundColor = Color.FromRGB(81,134,236)
    };

注意すべき点がいくつかあります。

  1. まず、アイコンをと同じ色に着色ないTintIconように設定falseましまた、ではなく設定しましたこれは、画像がその下のレイヤーではなく、テキストのピアであることを確認するためです。TextColorIconImageBackgroundImage

  2. またIconImageForms9Patch.Button.Paddingと、およびのパディングを設定できることにも注意してくださいForms9Patch.Button.Spacingtrueに設定されているかどうに応じてIconImageとまたはの間の距離)。TextHtmlTextHasTightSpacing

  3. .png(画面解像度ごとに)複数のファイルを使用する代わりに、使用.svg可能な画像のバージョンがある場合は、代わりにそれを使用できます。はるかに少ない作業!

  4. もう1つ興味があるかもしれません。Forms9Patchがプラットフォームに依存しない方法で画像を処理するのと同じように(埋め込みリソースとしてクロスプラットフォームプロジェクトに配置することで)、フォントでも同じことができます。これは、フォントファイル(.ttfまたは.otf)をクロスプラットフォームプロジェクトに配置し、そのEmbeddedResourceIdをの値として使用できることを意味しますFontFamilyまた、この動作は、を使用してXamarin.Forms要素に拡張できますForms9Patch.EmbeddedResourceFontEffect

少し改宗します(これが当てはまらない場合はご容赦ください):サンプルコードにXAMLを使用したようです。応答しなかったことに注意してください。.NetやXamarin.Formsを初めて使用する場合は、XAMLを使用しないことを強くお勧めします。誤解しないでください。XAMLは素晴らしいです-初心者向けではありません。どうして?カバーの下で起こっていることが多すぎて、初心者として、あなたをつまずかせたり、遅くしたりします。むしろ、すべてのUIをC#で記述して、プロパティの管理方法とバインディングの実際の仕組みを学ぶことをお勧めします。バインディングを「コンテキストに適した」最適な方法で使用して非常に効率的なレイアウトを作成する方法をマスターしたら、XAMLの準備が整います。私のために、実際のテストでは、ListViewの大きなリストで非常に複雑なセルレイアウトを作成して、ローエンドのAndroidフォンでスムーズにスクロールできるようにしました。その経験の後、私は、初心者のミスに縛られることを心配することなく、XAMLで開発することのすべての利点を利用することができました(そして多くあります)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ