android,设计画廊滚动条,三张图片,一张图片占1/3滚动条,如图所示,最好使用HorizontalScrollView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android,设计画廊滚动条,三张图片,一张图片占1/3滚动条,如图所示,最好使用HorizontalScrollView相关的知识,希望对你有一定的参考价值。

参考技术A <HorizontalScrollView
android:layout_width="200dp"
android:layout_height="fill_parent">
<ListView
android:layout_width="400dp"
android:layout_height="fill_parent"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:scrollingCache="false"
/>
</HorizontalScrollView>

多个滚动视图?

【中文标题】多个滚动视图?【英文标题】:Multiple Scrollviews? 【发布时间】:2014-11-23 09:33:37 【问题描述】:

我真的不知道如何解释我想要什么,所以这是一张图片:

我有一个包含很多子视图(灰线)的视图。然后背景(蓝色)是一张图片(UIImageView + Blur 效果),所以我需要它留下而不是滚动。在背景后面,有一个视图(橙色)。我希望图片(蓝色)仅在子视图(灰色)位于底部(第三张图片)时滚动。

我应该使用嵌入滚动视图,还是只使用一个 UIScrollView 就能获得这种效果?如果有多个滚动视图,有人有例子吗?

非常感谢您的帮助

【问题讨论】:

【参考方案1】:

只使用一个滚动视图,并使用它的委托方法'scrollViewDidScroll'来读取内容偏移量。使用此值来翻译您的背景图片。

【讨论】:

【参考方案2】:

没有必要使用 2 个滚动视图。但我会使用它,因为我更喜欢设置背景滚动视图的contentOffset,而不是直接设置它的框架。

这个想法是你为前滚动视图实现scrollViewDidScroll:委托方法。并跟踪contentOffset,通过检查是否scrollView.contentOffset.y + scrollView.bounds.size.height &gt; scrollView.contentSize.height来检查滚动是否到达其内容的末尾。

如果有,那么您使用超过内容大小的偏移量偏移背景视图的位置。

请看下面的代码。可以跳过所有代码,只看scrollViewDidScroll:

@implementation ViewController

- (void)viewDidLoad 
    [super viewDidLoad];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    self.backgroundScrollView.userInteractionEnabled = NO;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    return 20;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    cell.textLabel.text = [NSString stringWithFormat:@"Item %ld", (long)indexPath.row];
    return cell;


- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
    CGFloat backgroundVerticalOffset = MAX(scrollView.contentOffset.y + scrollView.bounds.size.height - scrollView.contentSize.height, 0);
    CGPoint backgroundContentOffset = CGPointMake(0.0, backgroundVerticalOffset);
    self.backgroundScrollView.contentOffset = backgroundContentOffset;
    // If you decide not to use two scroll views, then please use backgroundContentOffset to set the backgroundView.frame.origin.y instead
    // e.g. backgroundView.frame.origin.y = -backgroundContentOffset;

结果如下:

附:我使用蓝色背景视图而不是图像视图和其他所有具有清晰背景颜色的视图。

【讨论】:

在您的示例中,故事板层次结构是什么?蓝色背景视图是:backgroundScrollView 的子视图还是 backgroundScrollView 的子视图? backgroundScrollView 位于tableView 后面。他们是兄弟姐妹。蓝色背景视图是backgroundScrollView的子视图。 哦,在您的示例中,滚动视图不会停留在上方位置,是吗?如果我希望滚动视图在拖动结束时保持在上方位置怎么办? “居高临下”是什么意思? 我的意思是当你停止点击时(当白色视图未隐藏时),滚动视图不会自行替换并且白色视图保持可见

以上是关于android,设计画廊滚动条,三张图片,一张图片占1/3滚动条,如图所示,最好使用HorizontalScrollView的主要内容,如果未能解决你的问题,请参考以下文章

android画廊怎样做出超炫效果

android画廊怎样做出超炫效果

android点击画廊某张图片,目的使整个画廊放大,所点击的图片仍放中间,这个效果怎么设置

简单的画廊下一个上一个按钮背景图像

多个滚动视图?

Swift - 使用CollectionView实现图片Gallery画廊效果(左右滑动浏览图片)