2

我是 Dart 和 Rikulo 的新手。

class NameView extends Section
{
  View parentVu;

  // the inputs
  DropDownList titleDdl, suffixDdl; 
  TextBox firstNameTBox, middleNameTBox, lastNameTBox;

  // the labels
  TextView titleLbl, firstNameLbl, middleNameLbl, lastNameLbl, suffixLbl;

  List<String> titles = [ 'Dr', 'Hon', 'Miss', 'Mr', 'Mrs', 'Prof', 'Sir' ];
  List<String> suffixes = ['I', 'II', 'III', 'IV', 'Junior', 'Senior'];

  NameView()
  {
     parentVu = new View()
     ..style.background = 'cyan'
     ..addToDocument();

     titleLbl = new TextView( 'Title' );
     parentVu.addChild( titleLbl );

     titleDdl = new DropDownList( model : new DefaultListModel( titles ) )
       ..profile.anchorView = titleLbl
       ..profile.location = 'east center';
     parentVu.addChild( titleDdl );

     firstNameLbl = new TextView( 'First' )
       ..profile.anchorView = titleDdl
       ..profile.location = 'east center';
     parentVu.addChild(firstNameLbl );

     firstNameTBox = new TextBox( null, 'text' )
      ..profile.anchorView = firstNameLbl
      ..profile.location = 'east center';
      //..profile.width = 'flex';
     parentVu.addChild( firstNameTBox );
}

程序呈现。但是,它不使用浏览器 (FireFox) 的整个宽度。我已经尝试过 TextBoxes profile.width = 'flex'

但它不起作用。

任何帮助表示赞赏。

4

2 回答 2

0

如果一个视图锚定到另一个视图,位置和大小都将取决于它所锚定的视图。在您的情况下,如果将 flex 指定为 TextBox,则其宽度将与 FirstNameLb1 相同。这就是为什么它这么小。

您可以监听布局事件,例如:

 firstNameTBox.on.layout.listen((_) {
    firstNameTBox.width = parentVu.width;
 });

注意:您需要进行一些计算才能获得正确的宽度。

另请参阅布局概述

于 2013-04-29T11:36:42.043 回答
0

火狐?你用 Dartium 测试过吗?请注意,您必须先将其编译为 JS,然后才能使用 Dartium 以外的浏览器对其进行测试。

顺便说一句,从您的实现来看, NameView 似乎与 parentVu 完全无关。如果它只是一个控制器,它不需要从 Section 扩展(即,它不必是一个视图)。

于 2013-04-28T05:55:14.917 回答