如何在温泉 ui 应用列表中显示滚动条

How to show scrollbars in onsen ui app list

我正在使用 Onsen Ui 构建混合 Phonegap 应用程序。某些页面上有包含 100 个项目的列表。但是,滚动条没有显示。有没有办法在页面上显示原生的滚动条?

这是我使用的代码:

          <ons-row >
              <ons-col align="center" >
                <ons-list  class="scrollme" ng-scrollbar is-bar-shown="true">
                    <ons-list-item modifier="tappable" ng-repeat="hotel in hotels" ng-click="viewHotel(hotel);">
                        <div class="hotel-item">
                            <img preload-image ng-src="http://domain.com/{{hotel.thumbNailUrl}}" default-image="img/loader.gif" alt="Thumbnail" class="testimage">
                            <div class="gradient-overlay" style="text-align: center">
                                <div class="details">
                                    <h4>{{hotel.name}}</h4>
                                    <h4>{{hotel.rateCurrencyCode + " " + hotel.highRate}}
                                </div>
                            </div>
                        </div>
                    </ons-list-item>
                    <ons-button type="cta" should-spin="{{isFetching}}" 
                        ng-show="moreResultsAvailable" ng-click="loadMore()" class="loadMore">More Results</ons-button>
                </ons-list> 
              </ons-col>
            </ons-row>

更新

我试过这个 ng-scrollbar ,但它不起作用。当我滚动列表时,滚动条本身会向上滚动。

尽管有原生应用,Onsen UI 还没有滚动条元素(版本 1.3.1),但很有可能在不久的将来实现。

来源:我是 Onsen UI 开发团队成员

与 Onsen UI 捆绑在一起的 onsenui.css 文件使用此代码隐藏滚动条:

::-webkit-scrollbar {
    display: none;
} 

要启用滚动条,您只需通过覆盖功能来取消此操作,例如将此代码添加到您的 index.html:

<style>
::-webkit-scrollbar {
    display: block !important;
    width: 5px;
    height: 0px;
}

::-webkit-scrollbar-track {
    background: rgba(0,0,0,0.1);
}

::-webkit-scrollbar-thumb {
    border-radius: 2px;
    background: rgba(0,0,0,0.3);
    -webkit-box-shadow: inset 0 0 3px rgba(0,0,0,0.5); 
}
</style>

警告

虽然这种方法似乎适用于我放在一起的特定风格的应用程序(仅 Android)。事实上,开发团队隐藏了滚动条,并且还没有办法将其放回屏幕上(请参阅@Andy 的其他答案),这让我认为重新启用可能会有一些不需要的副作用CSS 级别的滚动条,(我在考虑 lazy-repeat 控件的问题或外观和感觉上的跨平台差异)。换句话说:使用风险自负。

在最新版本的 onsen-ui 中,现在 <ons-scroller> 用于滚动目的,因此您可以将其添加到您的 hmtl 中,如下所示

<ons-scroller style="height: 200px; width: 100%">
<ons-row >
  <ons-col align="center" >
    <ons-list  class="scrollme" ng-scrollbar is-bar-shown="true">
        <ons-list-item modifier="tappable" ng-repeat="hotel in hotels" ng-click="viewHotel(hotel);">
            <div class="hotel-item">
                <img preload-image ng-src="http://domain.com/{{hotel.thumbNailUrl}}" default-image="img/loader.gif" alt="Thumbnail" class="testimage">
                <div class="gradient-overlay" style="text-align: center">
                    <div class="details">
                        <h4>{{hotel.name}}</h4>
                        <h4>{{hotel.rateCurrencyCode + " " + hotel.highRate}}
                    </div>
                </div>
            </div>
        </ons-list-item>
        <ons-button type="cta" should-spin="{{isFetching}}" 
            ng-show="moreResultsAvailable" ng-click="loadMore()" class="loadMore">More Results</ons-button>
    </ons-list> 
  </ons-col>
</ons-row>
</ons-scroller>