我想使用View Pager2
实现轮播,并预览左右页面,如下所示:
最初,我使用的是支持的视图 pager1。现在我认为它已被删除
viewPagerhost.setPageMargin(20);
任何想法,我们如何才能实现这个使用视图寻呼机2
我使用MJ Studio的方法创建了我的自定义PageTransformer
,该方法还更改了页边距,如下所示:
class OffsetPageTransformer(
@Px private val offsetPx: Int,
@Px private val pageMarginPx: Int
) : ViewPager2.PageTransformer {
override fun transformPage(page: View, position: Float) {
val viewPager = requireViewPager(page)
val offset = position * -(2 * offsetPx + pageMarginPx)
val totalMargin = offsetPx + pageMarginPx
if (viewPager.orientation == ViewPager2.ORIENTATION_HORIZONTAL) {
page.updateLayoutParams<ViewGroup.MarginLayoutParams> {
marginStart = totalMargin
marginEnd = totalMargin
}
page.translationX = if (ViewCompat.getLayoutDirection(viewPager) == ViewCompat.LAYOUT_DIRECTION_RTL) {
-offset
} else {
offset
}
} else {
page.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = totalMargin
bottomMargin = totalMargin
}
page.translationY = offset
}
}
private fun requireViewPager(page: View): ViewPager2 {
val parent = page.parent
val parentParent = parent.parent
if (parent is RecyclerView && parentParent is ViewPager2) {
return parentParent
}
throw IllegalStateException(
"Expected the page view to be managed by a ViewPager2 instance."
)
}
}
这样,您只需调用:
viewPager.setPageTransformer(OffsetPageTransformer(offsetPx, pageMarginPx))
现在我们需要在Version 1.0.0-alpha05
中使用setPageTransex()
新功能
ItemDecorator
采用了与RecyclerView一致的行为MarginPageTransformer
以提供在页面之间创建空间的能力(页面插入之外)示例代码
myViewPager2.setPageTransformer(new MarginPageTransformer(1500));
如果您想使用View Pager2实现Carousel,请查看我之前的回答
MarginPageTransformer
无法满足您的需求。
您必须使用自定义setPageTrarnsformer。
这是我的扩展方法。
你可以在这篇文章中查看详情
fun ViewPager2.setShowSideItems(pageMarginPx : Int, offsetPx : Int) {
clipToPadding = false
clipChildren = false
offscreenPageLimit = 3
setPageTransformer { page, position ->
val offset = position * -(2 * offsetPx + pageMarginPx)
if (this.orientation == ViewPager2.ORIENTATION_HORIZONTAL) {
if (ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL) {
page.translationX = -offset
} else {
page.translationX = offset
}
} else {
page.translationY = offset
}
}
}
使用您的用例设置pageMarginPx和offsetPx。
<resources>
<dimen name="pageMargin">20dp</dimen>
<dimen name="pagerOffset">30dp</dimen>
<dimen name="pageMarginAndoffset">50dp</dimen>
</resources>
在xml中设置布局项的边距。
喜欢这个
<androidx.cardview.widget.CardView
app:cardCornerRadius="12dp"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_marginLeft="@dimen/pageMarginAndoffset"
android:layout_marginRight="@dimen/pageMarginAndoffset"
android:layout_width="match_parent"
android:layout_height="match_parent">
好吧,所以我完全被这个DNS配置卡住了。以下是配料: null 我显然搞错了。有人能看出我哪里出了问题吗?
我有以下log4j2配置 当我试图通过slf4j获取记录器时 我正在Tomcat 7.0.4中运行应用程序,并使用http://logging.apache.org/log4j/2.x/manual/lookups.html建议的语法。我尝试使用$${web:rootdir}(带有2个$标记),结果删除了其中一个$-s,但查找仍未成功。事实上,其他的查找都没有成功(例如环境变量)。Log4j版本为
我正在Android Studio中尝试Kotlin和Kotlin Android扩展。我在Ubuntu 14.04上的Android Studio v1.5.1和OS X El Capitan上的Android Studio v1.5.1中都进行了尝试,得到了相同的结果。 下面是我正在做的事情: null 然后进入生成的content_main.xml文件,并为“hello World!”添加一
我遇到了一个错误 导入语句如下所示 Kotlin版本:1.1.51 提前致谢:)
问题演示 我的任务是创建一个动态Web项目,该项目扫描来自服务器的文档,通过我的程序并将图片从文本中拆分。我需要OpenCV库。我的代码在eclipse中运行良好,工作良好。现在,我需要将库作为全局模块加载到jboss中,而不是在eclipse中,以便服务器始终知道需要加载哪些库。我所做的一切都是这个链接描述的: 有人知道为什么这是个问题吗?是否存在验证问题?Eclipse在将一个新类放入open