ボタンにテキストと画像の両方があるXamarinフォームクロスプラットフォームアプリケーション(iOSとAndroid)でボタンを作成しようとしています。Xamarin - 絶対レイアウトのテキストと画像のボタンの要素の位置が正しくない
<AbsoluteLayout ...>
<Labels and backgrounds and such>
<Button x:Name="HomeButton2" TranslationX="6" TranslationY="100"
BackgroundColor="#efeff4" TextColor="#4a4a4a"
WidthRequest="58" HeightRequest="76"
ContentLayout="Top,5"
Image="TaskBar_Assets_HomeButtonIcon.png" Text="Home"
Clicked="HomeButton_Clicked" />
</AbsoluteLayout>
しかし、私はiPad上で取得することは、画像とテキストの両方が妙側にオーバープッシュされるボタンです:XAMLは非常に簡単です
(ソースイメージ "TaskBar_Assets_HomeButtonIcon.png"は47 x 44ですので、全体的なボタン領域にはうまく収まるはずです)
この外観を良くするために唯一の方法は、ボタンに基づいてカスタムコントロールを作成することですいくつかのことが分かります基礎となるUIButtonの性質のグラグラようだ:
Control.ImageView.Frameがすべてゼロである:
Control.ImageView = <UIImageView: 0x12df52940; frame = (0 0; 0 0);
clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO;
layer = <CALayer: 0x173623180>>
Control.ImageEdgeInsetsと.TitleEdgeInsetsが(奇数、右見て左+、彼らは何を残していないように見えます画像やテキストのためのスペース):Control.ImageEdgeInsets.Leftは(ボタンの幅マイナスイメージの幅の半分に等しくなるように、私は何をやっている
Control.ImageEdgeInsets = {-8.9501953125, 20.33935546875, 8.9501953125, -20.33935546875}
Control.TitleEdgeInsets = {22, -23.5, -22, 23.5}
、)Control.ImageEdgeInsetsを調整して、 Control.ImageEdgeInsets.Rightを0に設定します(部品がない場合それが動作することを除いてicular理由)
、その後Control.TitleEdgeInsetsを設定するために何を考え出すが裁判&エラーで行われていた、私は「ホーム」テキストの幅に関連する値になってしまった(41個のピクセル):
私は実際にテキスト「ホーム」を得るために、よりトライアル&エラーを行う必要があるように見えるものの:合理的なボタンの外観になり
Control.ImageEdgeInsets updated to {-8.9501953125, 5.5, 8.9501953125, 0}
Control.TitleEdgeInsets updated to {22, -50, -22, -9}
中心に置かれた。
しかし、なぜこれをすべて実行する必要がありますか?なぜボタンはテキスト&の画像を正しく最初に表示しないのですか?
これをすべて実行しなければならない場合、左の値はなぜですか?& ImageEdgeInsetsとTitleEdgeInsetsの値が異なるのはなぜですか?
興味深い...ので、私は私の最初の質問はこれです推測:あなたは、これらのインセット値を表すことになっているか知っていますか?私はイメージインセットがテキストに依存するようなエッジのインセットが何であるか想像することはできませんし、テキストのインセットはイメージに依存しています... –
そして...それは動作しません。これらの値は、実際にコードが私に与えているものです(この記事の早い段階で、私は「奇妙に見えました」と言っています)。 –
私はイラストを描く、それがはっきりと願っています。 –