Высота и прокрутка NativeScript ListView

еще один вопрос NativeScript. :)

Таааак, вот настройка:

{
    "nativescript": {
        "id": "org.nativescript.githubreader",
        "tns-ios": {
            "version": "1.7.0"
        },
        "tns-android": {
            "version": "1.7.1"
        }
    },
    "dependencies": {
        "lodash": "^4.10.0",
        "nativescript-telerik-ui": "^1.0.1",
        "tns-core-modules": "1.7.1"
    },
    "devDependencies": {
        "nativescript-dev-typescript": "^0.3.0",
        "typescript": "^1.8.9"
    }
}
  • Содержимое ящика> StackLayout> Компонент ListView

Проблема в том, что когда я получаю свой список данных, ListView остается той же высоты и просто открывает полосу прокрутки, чтобы, очевидно, прокручивать.

Результат, который я ищу, заключается в том, что, как и в случае с html, ListView адаптируется по высоте в зависимости от данных. Следовательно, будет прокручиваться основное представление, а не сам компонент ListView.

Если я хочу получить полосу прокрутки, я бы просто ограничил высоту ListView в CSS или иным образом.

Я надеюсь, что то, что я говорю, имеет достаточно смысла. :) И я ищу также в источнике Telerik UI ListView, но пока не нашел ничего полезного :(

Спасибо, что нашли время прочитать.


person hekigan    schedule 09.05.2016    source источник
comment
Возможно, стоит перейти на nativescript 2.0.0, это решило для меня много проблем. github.com/NativeScript/nativescript- cli / blob / release /   -  person R Pelzer    schedule 10.05.2016
comment
Сделаю и посмотрю как пойдет :)   -  person hekigan    schedule 10.05.2016


Ответы (1)


Если вам не нужны все функциональные возможности ListView, вы можете изучить использование ScrollView и где-нибудь внутри иметь Repeater. Что-то вроде этого:

<scroll-view>
    <!-- content above your list of items, i.e. image, label, stack-layout, etc... -->
    <repeater items="navItems">
        <repeater.itemTemplate>
            <label text="{{navItemLabel}}" tap="navItemTapped" />
        </repeater.itemTemplate>
    </repeater>
</scroll-view>

При необходимости вы можете заключить все в <grid-layout columns="*" rows="*"> (1 строка и 1 столбец, оба установлены на *, чтобы занимать всю ширину / высоту доступной области), таким образом, если контент вырастет за пределы этого размера, все это будет будет прокручиваться.

person Bradley Gore    schedule 10.05.2016
comment
Мне кажется, это хорошая идея, спасибо. Так что на данный момент нет возможности сделать это с помощью ListView? Да, и еще один вопрос, касающийся ScrollView: следует ли его размещать внутри RadSideDrawer или сразу после открытия тега Page? - person hekigan; 10.05.2016
comment
@hekigan Вы бы поместили ScrollView внутрь RadSideDrawer - он обернул бы весь контент, который вы хотите прокрутить. то есть если у вас есть элемент, действующий как заголовок, вы можете не захотеть, чтобы он прокручивался, но все, что находится под ним. ListView автоматически прокручивается, если элементы внутри него слишком велики, что является частью его набора функций. - person Bradley Gore; 10.05.2016
comment
Спасибо за уделенное время. В конце концов, я выбрал кое-что, что мне нужно будет почистить позже. То, что я сделал, довольно грязно: <ListView items="{{ searchResult }}" height="{{ searchResult.length * 143 }}"> Пока это подойдет, но не то, что я хочу оставить как есть :) - person hekigan; 12.05.2016