首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnIdiom与AbsoluteLayout的结合

OnIdiom与AbsoluteLayout的结合
EN

Stack Overflow用户
提问于 2021-01-18 21:28:37
回答 1查看 413关注 0票数 0

我有圆形按钮,并试图改变他们的大小取决于他们是在电话或平板电脑使用AbsolutLayout

这是我的xaml:

代码语言:javascript
复制
<Frame BackgroundColor="{StaticResource ThemeColor}" Padding="0" CornerRadius="40" AbsoluteLayout.LayoutBounds="{StaticResource HomeCircle}" AbsoluteLayout.LayoutFlags="PositionProportional"> 
    <Label Text="&#xf5a0;" HorizontalOptions="Center" VerticalOptions="Center" Style="{StaticResource Icon}" TextColor="{StaticResource LabelColor}"/> 
    <Frame.GestureRecognizers> 
        <TapGestureRecognizer Tapped="Directions"/> 
    </Frame.GestureRecognizers> 
</Frame> 

<AbsoluteLayout.Resources> 
    <ResourceDictionary> 
        <OnIdiom x:Key="HomeCircle" x:TypeArguments="Frame" Phone=".85,.375, 80, 80"
                                                            Tablet=".85,.375, 120, 120"/> 
    </ResourceDictionary> 
</AbsoluteLayout.Resources>

我看了一下这个资源,但它没有用:

How to use attached properties such as Grid.Row, AbsoluteLayout.LayoutFlags to OnPlatform tag in Xamarin Forms

编辑:尝试了矩形、AbsoluteLayout和框架的AbsoluteLayout,它们都给出了这个错误:

XFC0009 XFC0009没有为"Phone“找到属性、BindableProperty或事件,或者值和属性之间的类型不匹配。

编辑:还查看了这个线程,它提供了相同的错误:

https://xamarin.github.io/bugzilla-archives/55/55183/bug.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 09:20:17

我过去也遇到过同样的问题。我的解决方案是通过绑定来设置AbsoluteLayout边界,而不是StaticResource。

在ViewModel中:

代码语言:javascript
复制
public Xamarin.Forms.Rectangle HomeCircle => Xamarin.Forms.Device.Idiom == TargetIdiom.Phone ? new Xamarin.Forms.Rectangle(0.5f, 0.5f, 80, 80) : new Xamarin.Forms.Rectangle(0.5f, 0.5f, 120, 120);

在yaml中:

代码语言:javascript
复制
<AbsoluteLayout>
   <Frame BackgroundColor="Gray"
      Padding="0"
      CornerRadius="40"
      AbsoluteLayout.LayoutBounds="{Binding HomeCircle}"
      AbsoluteLayout.LayoutFlags="PositionProportional">
      <Label Text="TEST"
         HorizontalOptions="Center"
         VerticalOptions="Center"
         TextColor="Black"/>
         <Frame.GestureRecognizers>
            <TapGestureRecognizer Command="{Binding DoSomething}"/>
         </Frame.GestureRecognizers>
      </Frame>
   </AbsoluteLayout>

无论如何,AbsoluteLayout.LayoutBounds需要矩形,而且标记并不总是允许所有的内容:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65782295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档