【问题标题】:Androids RelativeLayout for Windows PhoneWindows Phone 的 Android 相对布局
【发布时间】:2012-12-11 14:50:10
【问题描述】:

我目前正在尝试为联系信息设计一个表格,其中包括一个用于电话、电子邮件或类似符号等图标的列,我想将它们与下一列中的文本对齐

icon | Telephone:
     | +1212354567
icon | Email:
     | x@y.com

是否有任何布局可以在功能上与Androids RelativeLayout 进行比较?我尝试使用网格布局,但这似乎容易出错且不够精确。我不想将布局划分为列和行,而是想描述它们在 RelativeLayout 中使用的位置(toLeft、toRight、AlignParentBottom 等)。

可以将 StackPanel 与 LinearLayout 进行比较,我想避免使用它,因为它不适合我当前的设计。

Windows Phone 和 Android 布局之间是否有我可以定位的比较? This one 不完整,没有为 RelativeLayout 提供建议。

【问题讨论】:

    标签: layout windows-phone-8 windows-phone


    【解决方案1】:

    我知道你说过你不想使用网格,但我觉得在这种情况下你必须这样做。

    不过,我会使用网格和堆栈面板来构建它。

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
    
        <!-- Image for first row item -->
        <Image Grid.Column="0" Grid.Row="0" Source="icon-url" />
        <!-- Container for the details of the first row item -->
        <StackPanel Grid.Column="1" Grid.Row="0">
            <TextBlock Text="Telephone:" />
            <TextBlock Text="+1212354567" />
        </StackPanel>
    
        <!-- Image for second row item -->
        <Image Grid.Column="0" Grid.Row="1" Source="icon-url" />
        <!-- Container for the details of the second row item -->
        <StackPanel Grid.Column="1" Grid.Row="1">
            <TextBlock Text="Email:" />
            <TextBlock Text="x@y.com" />
        </StackPanel>
    
        <!-- Just add rows to the grid to continue the list -->
    </Grid>
    

    【讨论】:

    • 是的,这将是我现在的最后希望。我习惯于避免来自 Android 的嵌套布局,因此我希望有一些类似于我曾经知道和喜欢的 RelativeLayout 的东西:) 这样我就可以只使用一个 StackPanel 而不必为每一点添加一个新的 StackPanel。
    • 这不是安卓。 StackPanel 和 Grid 是您在 XAML 中最好的朋友。通常您会使用带有 DataTemplate 的 ItemsControl,因此您不必“为每个点添加一个新 StackPanel”(框架会为您执行此操作)
    • 我仍在研究数据绑定。我以为它只适用于 LongListSelector。我可以将 Grid 或 StackPanel 与相同的功能结合起来吗?
    【解决方案2】:

    没有可比较的面板,但有冒险精神的人可以创建一个。有很多关于如何做到这一点的文章,但这里有一篇供参考。 http://www.switchonthecode.com/tutorials/wpf-tutorial-creating-a-custom-panel-control

    也就是说,没有理由不将 Grid 用于您想做的事情。它不是“容易出错”或“不够准确”。不过,SharedSizeGroup 应该在这里成为您的朋友。

    【讨论】:

    • 感谢您的回答。 SharedSizeGroup 看起来很有希望。如果我想将一个单元格链接到另一个单元格,我只需将所需的参数添加到该组中,它将指向第一个?
    • SharedSizeGroup 允许来自一个或多个网格的列或行共享相同的大小。例如,如果您为使用网格的 ListItems 创建模板,您可能希望该网格中的列在每个列表项中具有相同的宽度。 bengribaudo.com/blog/2011/05/21/1228/…
    • 感谢您的链接。但是,SharedSizeGroup 仅适用于桌面上的 WPF。正如标签所示,我正在专门寻找 Windows Phone 解决方案。
    • 啊……是的,我必须道歉。我是一名 WPF 开发人员,对 Silverlight/Phone 还很陌生,这是一个我没有意识到有区别的地方。这是一个带有一些解决方法的 SO 帖子:stackoverflow.com/questions/4562104/…。也可以使用您自己的面板“修复”此问题,但同样,这并非易事,您可能需要创建一个 RelativeLayoutPanel。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多