Here's an interactive version. Note that I can't constrain the y axis
of the first view because the constraint "fights" with the layout.
(Putting a constraint on the same axis that is controlled by a layout
would be "programmer error".)
<canvas debug="true">
<view>
<simplelayout axis="y" spacing="10" inset="$
{layout_inset.value}"/>
<view bgcolor="blue" x="${first_x.value}" height="30" width="50">
</view>
<view bgcolor="yellow" x="${second_x.value}" height="30"
width="50"/>
<view bgcolor="green" height="30" width="50"/>
</view>
<slider id="layout_inset" value="15"/>
<slider id="first_x" value="20"/>
<slider id="second_x" value="15"/>
<simplelayout axis="y" spacing="5"/>
</canvas>
On Jun 19, 2006, at 2:49 PM, Jim Grandy wrote:
> John, there is a difference between setting the value of the axis
> under control, or the value of the opposite axis. In your example
> below, you set the y attribute of the first view, but the
> simplelayout is controlling the y attribute so the original value is
> overwritten. If you were to instead set the x attribute of that view
> to 30, you would see that the blue view would be initially placed at
> (30, 0).
>
> If you want to affect where the simplelayout begins its layout, you
> can set the inset attribute. Here's an example that shows both:
>
> <canvas debug="true">
> <view >
> <simplelayout axis="y" spacing="10" inset="15"/>
> <view bgcolor="blue" y="40" height="30" width="50">
> <handler name="onconstruct">
> Debug.monitor(this, 'x');
> Debug.monitor(this, 'y');
> </handler>
> </view>
> <view bgcolor="yellow" x="15" height="30" width="50"/>
> <view bgcolor="green" height="30" width="50"/>
> </view>
> </canvas>
>
> Note that the blue view is drawn at y=15, not y=30, and the yellow
> view is drawn at x=15, not x=0.
>
> jim
>
> On Jun 19, 2006, at 2:12 PM, John Sundman wrote:
>
>> Well, I am now officially confused about the behavior of simplelayout
>> (and not for the first time).
>>
>> This is what I have written in the reference page now:
>>
>> <p><classname>simplelayout</classname> extends
>> <classname>LzLayout</classname>, and therefore it is responsible for
>> arranging all of the subviews for the view that it is attached to.
>> <classname>simplelayout</classname>
>> affects either the <attribute>x</attribute> or <attribute>y</
>> attribute>
>> value, depending on the value of the <attribute>axis</attribute>
>> attribute. <classname>simplelayout</classname> places the first
>> subview
>> at (0, 0) and then places each subsequent subview based on the width
>> (or height) of the previous subview, depending on which axis was
>> specified.</p>
>>
>> However, consider the following:
>>
>> <canvas debug="true">
>> <view >
>> <simplelayout axis="y" spacing="10"/>
>> <view bgcolor="blue" y="40" height="30" width="50">
>> <handler name="oninit">
>> Debug.write("x is " + x, "y is " + y)
>> </handler>
>> </view>
>> <view bgcolor="blue" height="30" width="50"/>
>> <view bgcolor="blue" height="30" width="50"/>
>> </view>
>> </canvas>
>>
>> No matter what values you assign to x and y of the first view, it
>> always appears in the upper left corner. That is, to the eye it
>> appears that it's at x=0, y=0.
>>
>> However, the debug statements reflect the values given to x and y in
>> the opening tag.
>>
>> So the question comes down to, who am I going to believe, the debug
>> statement or my lying eyes?
>>
>> Or, more likely, am I overlooking something really obvious?
>>
>> Thanks
>>
>> jrs
>>
>> _______________________________________________
>> Laszlo-dev mailing list
>> [email protected]
>> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
>
> _______________________________________________
> Laszlo-dev mailing list
> [email protected]
> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev
_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev