代码之家  ›  专栏  ›  技术社区  ›  Royi Namir

Nativescript将元素移动50%,而不是100%?

  •  0
  • Royi Namir  · 技术社区  · 7 年前

    我有一个简单的演示项目,其中:

    <GridLayout>
    
        <StackLayout #myStack1 width="100" height="100" translateX="-50" backgroundColor="red" id="bbb">
        </StackLayout>
    
        <StackLayout #myStack2 width="100" height="100" translateX="50" backgroundColor="green" id="ccc">
        </StackLayout>
    </GridLayout>
    

    enter image description here

    请注意 width height 100 .

    现在让我们添加 marginTop green 布局:

    @ViewChild("myStack2") private myStack2: ElementRef;
    ngOnInit(): void {
        this.myStack2.nativeElement.marginTop =100;
      }
    

    但看看发生了什么:

    enter image description here

    它被移动了 50% 属于 100 (盒子尺寸为100)。为什么?

    问题:

    为什么会发生这种情况?我如何将代码修复为marginTop 100 ?

    我不是在追求translateY=100(这确实如预期所示-我在追求marginTop的原因和解决方案)。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Nick Iliev    7 年前

    这实际上是基于您使用的布局结构的预期行为。 问题是 StackLayout 用于应用 marginTop 拉伸(否 verticalAlignment 设置意味着默认情况下布局将被拉伸)。 要克服这个问题,只需应用 垂直对齐 背景

    例如:

    <GridLayout>
        <StackLayout  verticalAlignment="top" #myStack1 width="100" height="100" translateX="-50" backgroundColor="red" id="bbb">
        </StackLayout>
    
        <StackLayout verticalAlignment="top" #myStack2 width="100" height="100" translateX="50" backgroundColor="green" id="ccc">
        </StackLayout>
    </GridLayout>
    

    可以找到其他解决方案 here