UltraViewPager icon indicating copy to clipboard operation
UltraViewPager copied to clipboard

为什么普通的轮播,右边会有一小点的间隙?

Open ikimiler opened this issue 7 years ago • 11 comments

为什么普通的轮播,右边会有一小点的间隙?既然选择开源了,那么请认真对待,而不是开源了就不管不问了,写代码就好比生孩子一样,不是生下来就没事了,你要照顾他,教育他,关爱他。

ikimiler avatar Sep 18 '17 01:09 ikimiler

if (!Double.isNaN(itemRatio)) { int itemHeight = (int) (childWidth / itemRatio); for (int i = 0, childCount = getChildCount(); i < childCount; i++) { View view = getChildAt(i); view.measure(MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(itemHeight, MeasureSpec.EXACTLY)); } } else { for (int i = 0, childCount = getChildCount(); i < childCount; i++) { View view = getChildAt(i); if (pagerAdapter.getPageWidth(getCurrentItem()) != 1) { view.measure(MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); } else { view.measure(MeasureSpec.makeMeasureSpec(childWidth,MeasureSpec.EXACTLY),childHeightSpec); //我在这里稍微改了下代码,正常了,不过还是希望你们能修复下 //view.measure(childWidthSpec, childHeightSpec); } } }

ikimiler avatar Sep 18 '17 01:09 ikimiler

首先非常感谢阿里这个开源项目。 楼上的问题我今天用了也是这样,#53这个问题感觉并没有解决,右边和上边都有一点间距,希望阿里作者用实际图片测试一下。下面是我的用法:

<com.tmall.ultraviewpager.UltraViewPager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/banner_viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#EEEEEE" app:upv_ratio="1.6"/>

wpq2014 avatar Sep 18 '17 06:09 wpq2014

感谢各位的关注!issue我一直在看,最近工作紧张,所以issue解决起来比较慢,下周会集中处理遗留的问题!顺便问下两位用的是1.6.0.1 ?

MikeAfc avatar Sep 19 '17 13:09 MikeAfc

是的

ikimiler avatar Sep 20 '17 01:09 ikimiler

@MikeAfc @andmizi 此问题修复了吗,我现在也是有此问题

gaoneng102 avatar Oct 10 '17 02:10 gaoneng102

我用的是 1.6.0.1 ,没找到新版本0.0。普通轮播的时候,没有测试纵向的时候,向右转的时候,右边会有间隙,向左转的时候,左边有间隙。我试了试一个妥协的办法,貌似可以 <com.tmall.ultraviewpager.UltraViewPager android:paddingLeft="-2dp" android:paddingRight="-2dp" android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="140dp"/>

tankman1016 avatar Jan 08 '18 03:01 tankman1016

@gaoneng102 貌似没有呢,你看上面,我是那样解决的

ikimiler avatar Jan 11 '18 03:01 ikimiler

@FriendLin 你的方法可行

NutBear avatar Jan 25 '18 07:01 NutBear

这个问题现在解决了吗?

z2700589 avatar Mar 02 '18 00:03 z2700589

楼上有说设置paddingRight="-2dp"、paddingLeft="-2dp" 来解决的,虽然可以消除小间隙但是会导致比例有误差~

把水平距离设置为0即可解决这个问题: UltraViewPager.setHGap(0);

wenzhihao123 avatar Sep 02 '19 07:09 wenzhihao123

public void setMultiScreen(float ratio) { multiScrRatio = ratio; if (pagerAdapter != null) { pagerAdapter.setMultiScrRatio(ratio); needsMeasurePage = true; } float pageMargin = (1 - ratio) * getResources().getDisplayMetrics().widthPixels; if (scrollMode == UltraViewPager.ScrollMode.VERTICAL) { setPageMargin((int) (pageMargin)); } else { //fixme 把默认值改为0防止图片边界有少量像素间距 setPageMargin((int) (-(pageMargin + convertDp2Px(getContext(), 0f)))); }

}

修改这里为0就好了

snube avatar Oct 09 '19 11:10 snube