Html5移动开发论坛

注册

 

发新话题 回复该主题

2.1下list不指定高度(无flex或者无height)情况下,不显示的修... [复制链接]

1#
银光图片
首先说明,2.0不指定高度,可以使用scrollablealse,这样列表内容有多高就自动会有多高。

我是使用list来完成autocomplete功能出现这个问题的。
在SDK2.1的情况下会出现list的容器高度为0,但list-item是有高度的,结果造成list不显示的问题

2.1 sencha的list就这么布局的,如果你不给list的外层容器高度,然后容器内部list  flex:1或者指定高度,否则就看不见;
也就是list的外部容器必须得有一个高度才行,这个容器不会自动随内部的list变高而变高,这个是因为list的container容器position为relative,但内部的item为position为absolute,item的高度是有的,但relative内部嵌absolute是不会让内部把容器撑大的。

解决方法:
在list的refresh事件中写代码:
refresh: function (list, eOpts) {
      list.setHeight(list.getItemMap().getTotalHeight());
}
或者直接写一个新的list继承,再到onRefresh里面写这个代码,以后用list就用继承的这个list。

QQ:346627581
www.mnigo.com 迷你狗免费在线财务进销存系统
分享 转发
TOP
2#

高手顶一记~~

Sencha Touch 交流 QQ 群 224711028 欢迎您的加入。
PhoneGap安卓 交流 QQ 群 250395324欢迎您的加入。
Html5 APP 交流 QQ 群 273843464欢迎您的加入。
TOP
3#




那个autocomplete控件的代码如下,跟list使用方法完全一样:

Ext.define('AroMobile_test.ux.AutoList', {
    extend: 'Ext.dataview.List',
    xtype: 'list_auto',

    doRefresh: function (list) {
        if (this.intervalId) {
            cancelAnimationFrame(this.intervalId);
            delete this.intervalId;
        }
        if (this.scheduledTasks) {
            this.scheduledTasks.length = 0;
        }
        var me = this,
            store = me.getStore(),
            scrollable = me.container.getScrollable(),
            scroller = scrollable && scrollable.getScroller(),
            painted = me.isPainted(),
            storeCount = store.getCount();

        me.getItemMap().populate(storeCount, this.topItemPosition);

        if (me.getGrouped()) {
            me.findGroupHeaderIndices();
        }

        // This will refresh the items on the screen with the new data
        if (me.listItems.length) {
            me.setItemsCount(me.listItems.length);
            if (painted) {
                me.refreshScroller(scroller);
            }
        }

        if (painted && this.getScrollToTopOnRefresh() && scroller && list) {
            scroller.scrollToTop();
        }

        //added by sutong
        list.setHeight(list.getItemMap().getTotalHeight());

        // No items, hide all the items from the collection.
        if (storeCount < 1) {
            me.onStoreClear();
            return;
        } else {
            me.hideEmptyText();
        }
    }
});
TOP
发新话题 回复该主题