我有ViewPager
,其中包含4个项目。我需要它可滚动直到第3项(包括),但当用户试图移动到第4项时,它应该不会让他。
当他验证3页时,我才需要让他移到第4页。
不要问为什么,它很复杂,但我只能在验证前3个后才能实例化并将第4页设置为适配器。这确实可以解决我的问题。我需要在列表中提供它。
有什么建议吗?
我尝试使用onPageScrolled()来查看是否可以阻止它向前移动甚至像素,但我无法弄明白。
答案 0 :(得分:1)
"use strict";
const gulp = require("gulp"),
del = require("del"),
tsc = require("gulp-typescript"),
sourcemaps = require('gulp-sourcemaps'),
tsProject = tsc.createProject("tsconfig.json"),
tslint = require('gulp-tslint'),
concat = require('gulp-concat'),
runSequence = require('run-sequence'),
nodemon = require('gulp-nodemon'),
gulpTypings = require("gulp-typings");
/**
* Remove build directory.
*/
gulp.task('clean', (cb) => {
return del(["dist"], cb);
});
/**
* Build Express server
*/
gulp.task('build:server', function () {
var tsProject = tsc.createProject('server/tsconfig.json');
var tsResult = gulp.src('server/src/**/*.ts')
.pipe(sourcemaps.init())
.pipe(tsc(tsProject))
return tsResult.js
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist/server'))
});
gulp.task('build:client', function () {
var tsProject = tsc.createProject('client/tsconfig.json');
var tsResult = gulp.src('client/**/*.ts')
.pipe(sourcemaps.init())
.pipe(tsc(tsProject))
return tsResult.js
.pipe(sourcemaps.write())
.pipe(gulp.dest('dist/client'))
});
/**
* Lint all custom TypeScript files.
*/
gulp.task('tslint', () => {
return gulp.src("client/app/**/*.ts")
.pipe(tslint())
.pipe(tslint.report('prose'));
});
/**
* Compile TypeScript sources and create sourcemaps in build directory.
*/
gulp.task("compile", ["tslint"], () => {
let tsResult = gulp.src("client/**/*.ts")
.pipe(sourcemaps.init())
.pipe(tsc(tsProject));
return tsResult.js
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("dist/client"));
});
/**
* Copy all resources that are not TypeScript files into build directory. e.g. index.html, css, images
*/
gulp.task("clientResources", () => {
return gulp.src(["client/**/*", "!**/*.ts", "!client/typings", "!client/typings/**", "!client/*.json"])
.pipe(gulp.dest("dist/client"));
});
/**
* Copy bin directory for www
*/
gulp.task("serverResources", () => {
return gulp.src(["server/src/bin/**"])
.pipe(gulp.dest("dist/server/bin"));
});
/**
* Copy all required libraries into build directory.
*/
gulp.task("libs", () => {
return gulp.src([
'core-js/client/**',
'zone.js/dist/zone.js',
'reflect-metadata/Reflect.js',
'reflect-metadata/Reflect.js.map',
'systemjs/dist/system.src.js',
'font-awesome/css',
'font-awesome/fonts',
'angular2-jwt/**',
'primeng/**'
], { cwd: "node_modules/**" }) /* Glob required here. */
.pipe(gulp.dest("dist/client/libs"));
});
/**
* Copy all required libraries into build directory.
*/
gulp.task("css", () => {
return gulp.src([
'bootstrap/dist/**/**'
], { cwd: "node_modules/**" }) /* Glob required here. */
.pipe(gulp.dest("dist/client/css"));
});
/**
* Install typings for server and client.
*/
gulp.task("installTypings", function () {
var stream = gulp.src(["./server/typings.json", "./client/typings.json"])
.pipe(gulpTypings(null)); //will install all typingsfiles in pipeline.
return stream; // by returning stream gulp can listen to events from the stream and knows when it is finished.
});
/**
* Start the express server with nodemon
*/
gulp.task('start', function () {
nodemon({
script: 'dist/server/bin/www'
, ext: 'html js'
, ignore: ['ignored.js']
, tasks: ['tslint']
})
.on('restart', function () {
console.log('restarted!')
});
});
/**
* Build the project.
* 1. Clean the build directory
* 2. Build Express server
* 3. Build the Angular app
* 4. Copy the resources
* 5. Copy the dependencies.
*/
gulp.task("build", function (callback) {
runSequence('clean', 'build:server', 'build:client', 'clientResources', 'serverResources', 'libs', 'css', callback);
});
/**
* Watch for changes in TypeScript, HTML and CSS files.
*/
gulp.task('watch', function () {
gulp.watch(["client/**/*.ts"], ['compile']).on('change', function (e) {
console.log('TypeScript file ' + e.path + ' has been changed. Compiling.');
});
gulp.watch(["client/**/*.html", "client/**/*.css"], ['clientResources']).on('change', function (e) {
console.log('Resource file ' + e.path + ' has been changed. Updating.');
});
gulp.watch(["server/src/**/*.ts"], ['compile']).on('change', function (e) {
console.log('TypeScript file ' + e.path + ' has been changed. Compiling.');
});
});
/**
* Build the project.
* 1. Clean the build directory
* 2. Build Express server
* 3. Build the Angular app
* 4. Copy the resources
* 5. Copy the dependencies.
*/
gulp.task("build", function (callback) {
runSequence('clean', 'build:server', 'build:client', 'clientResources', 'serverResources', 'libs', 'css', callback);
});
gulp.task('default', function () {
runSequence('build:server', 'build:client', 'clientResources', 'serverResources', 'libs', 'css', 'watch', 'start');
});