2017-02-13 68 views
2

我想通过Codebihnd中的AbsoluteLayout在BoxView组件上添加文本。 类似这样的: enter image description here如何将标签文本添加到圆括号框中

我该怎么办?

这里是我的代码,在那里我把absoluteLayout到stackLayout底:

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成分粘到stacklayout而不是BoxView中。

也许我应该尝试RelativeLayout的?

你知道混帐一些组件?像XLabs?

谢谢。

+0

其实我的应用程序,我用来代替按钮 –

+0

@MikeDarwish的ImageButton有任何限制,没有ü检查例如多少大的文本可以持有? Tnx – Stefan0309

+0

标准图像按钮有限制。它大多不适合。在Mozilla中有一些开放的bug,如果你想在图像中使用文本,它只在图像右侧放置文本。我记得上次不可能改变。如果您需要图像按钮,则应该使用轻拍手势识别器的图像。 – batmaci

回答

0

我没有测试C#代码,但是我在XAML确切的代码和它的作品对我来说。您需要将boxview和label作为absolutelayout的子项,并且您必须设置如下所示的一些absolutelayout选项,以使它们彼此重叠。当然,首先添加boxview标签应该覆盖它。 标签的背景颜色必须为透明

最后一件事,我不知道,但我认为BoxView中的行得有舍入选项为默认值。你需要一些自定义渲染器。在下面的例子中,我使用了将styleclass作为圆圈暴露的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); 
相关问题