繁体   English   中英

ExtJS-Ext.Msg框的动态高度和宽度

[英]ExtJS - Ext.Msg box dynamic height and width

我有一个这样创建的消息框:

Ext.Msg.show({
  title: 'title',
  msg: 'some message',
  buttons: Ext.Msg.OKCANCEL,
  icon: Ext.Msg.WARNING
});

消息内容的长度是可变的,有时会分成两行。 我的要求是将消息放入一行,因此我将消息框的宽度硬编码为:

Ext.Msg.show({
      title: 'title',
      msg: 'some message',
      buttons: Ext.Msg.OKCANCEL,
      icon: Ext.Msg.WARNING,
      minWidth: 900,
      width: 900
    });

这增加了框的宽度,在大多数情况下,我的消息现在可以放在一行中,这足以满足我的要求。 但是,这带来了新的问题。

在此处输入图片说明

如您所见,框的底部现在有一个空白区域。 如果每个新条目大于一定长度,则该空间会增加(我认为此长度是框架为框计算的原始宽度)。

我认为正在发生的事情是,该框架最初会根据提供的数据来计算高度和宽度。 但是随后宽度被我设置的新值覆盖,从而增加了框的水平长度。 但是由于高度从未得到相应的调整,因此将其保留为最初计算的值,从而导致上述行为。

一些帮助解决这个问题将不胜感激! 谢谢。

更新:正在使用的ExtJS版本是4.1.1

在这里工作

实际上,当调用msgbox show方法时,框架会调用一个内部函数doAutoSize ,但那时我们的width (900)并未应用到msgbox topContainer (包含msg部分),这就是为什么它需要更高的height

要解决此问题,我们可以在show方法之后调用setHeight方法,如下所示:-

msg.setHeight(msg.header.getHeight()+msg.topContainer.getHeight()+msg.bottomTb.getHeight());

工作小提琴

注意:有关更多详细信息,请查看框架的show方法。

希望这会对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM