2017-02-13 15 views
2

BoxBusコンポーネントでテキストを追加するには、codebihndのAbsoluteLayoutが必要です。 次のようなもの: enter image description here丸みを帯びたボックスビューにラベルテキストを追加する方法

どうすればいいですか?

public TestPageBoxView() 
    { 
     StackLayout sl = new StackLayout(); 
     AbsoluteLayout al = new AbsoluteLayout(); 

     BoxView bv = new BoxView { BackgroundColor = Color.Green }; 
     Label l = new Label { Text = "Some text with \n breaks" }; 

     AbsoluteLayout.SetLayoutBounds(l, new Rectangle(0, 0,1,1)); 
     AbsoluteLayout.SetLayoutFlags(l, AbsoluteLayoutFlags.All); 

     sl.Children.Add(bv); 
     sl.Children.Add(al); 
     Content = sl; 
    } 

だから、私の懸念は、このL成分がBoxView内のためstacklayoutとしないように貼りされていることである。ここでは

は、私が最後にstackLayoutにabsoluteLayoutを入れて私のコードです。

多分、私はRelativeLayoutを試してみるべきでしょうか?

gitのコンポーネントを知っていますか? XLabsのような?

ありがとうございました。

+0

実は、私が代わりにボタン –

+0

@MikeDarwishのIMAGEBUTTONを使用していたすべての制限があり、uが大きなテキストは、それが保持することができますどのくらいの例をチェックしましたか? Tnx – Stefan0309

+0

標準画像ボタンには制限があります。それはほとんどフィットしません。 mozillaにはいくつかのオープンバグがあります。イメージにテキストを使用したい場合は、イメージの右側にテキストのみをレイアウトします。私が前回覚えているように変更することはできません。画像ボタンが必要な場合は、代わりにタップジェスチャ認識機能付きの画像を使用する必要があります。 – batmaci

答えて

0

私はC#コードをテストしませんでしたが、私はxamlに正確なコードを持っています。あなたはボックスビューとラベルをabsolutelayoutの子として持つ必要があります。そして、あなたがお互いの上に横たわっている以下のようないくつかのabsolutelayoutオプションを設定しなければなりません。もちろん、boxviewを追加するとそのラベルが上に重なるはずです。 ラベルの背景色はとなります。透明です。

最後のことは、わかりませんが、私はboxview doestがデフォルトとして丸めオプションを持っていると思います。そのためにカスタムレンダラが必要です。以下の例では、スタイルクラスを円として公開するxamarin lightテーマを使用します。それ以外の場合はcustomrendererを検索するか、いくつかのnugetpackagesが利用可能です。 xlabは私が推測している。これがあなたに役立つことを願っています私のアプリの

C#

AbsoluteLayout al = new AbsoluteLayout() 
      { 
       WidthRequest = 30, 
       BackgroundColor = Color.White, 
       HorizontalOptions = LayoutOptions.Center, 
       VerticalOptions = LayoutOptions.Center 
      }; 

      BoxView bv = new BoxView 
      { 
       StyleClass = "Circle" , 
       BackgroundColor = Color.Green, 
       HorizontalOptions = LayoutOptions.Center, 
       VerticalOptions = LayoutOptions.Center 
      }; 

      AbsoluteLayout.SetLayoutBounds(bv, new Rectangle(.5, .5, 1, 1)); 
      AbsoluteLayout.SetLayoutFlags(bv, AbsoluteLayoutFlags.All); 


      Label l = new Label { Text = "1", BackgroundColor = Color.Transparent }; 
      AbsoluteLayout.SetLayoutBounds(l, new Rectangle(.5, .5, 1, 1)); 
      AbsoluteLayout.SetLayoutFlags(l, AbsoluteLayoutFlags.All); 
      al.Children.Add(bv); 
      al.Children.Add(l); 
関連する問題