首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌套Android ViewPager,在ListView中水平滑动ListItems

嵌套Android ViewPager的ListView水平滑动ListItems

在Android应用中,使用ViewPager和ListView可以实现水平滑动的ListItems。以下是关于如何嵌套ViewPager和ListView的代码示例:

1. 创建一个布局文件

res/layout/目录下创建一个名为horizontal_viewpager_listview.xml的文件,内容如下:

代码语言:xml
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <!-- ViewPager -->
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"/>

    <!-- ListView -->
    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"/>

</LinearLayout>

2. 创建一个Adapter

创建一个名为HorizontalPagerAdapter.java的Java文件,内容如下:

代码语言:java
复制
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;

public class HorizontalPagerAdapter extends androidx.viewpager.widget.ViewPagerAdapter {
    private List<String> items;

    public HorizontalPagerAdapter(List<String> items) {
        this.items = items;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View view = LayoutInflater.from(container.getContext())
                .inflate(R.layout.horizontal_viewpager_listview, container, false);

        // Set the view pager as the content of the container
        container.addView(view);

        // Set the content of the view pager
        ViewPager viewPager = view.findViewById(R.id.viewPager);
        viewPager.setAdapter(new HorizontalPagerAdapter(items.get(position)));

        // Set the list view as the content of the view pager
        ListView listView = view.findViewById(R.id.listview);
        listView.setAdapter(new ListAdapter(items.get(position)));

        return view;
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
        return view == o;
    }
}

3. 创建一个ListAdapter

创建一个名为ListAdapter.java的Java文件,内容如下:

代码语言:java
复制
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ListAdapter extends ArrayAdapter<String> {
    public ListAdapter(String[] items) {
        super(items);
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.list_item, parent, false);
        }

        String item = getItem(position);

        // Set the text view as the content of the list item
        TextView textView = convertView.findViewById(R.id.textView);
        textView.setText(item);

        return convertView;
    }
}

4. 创建一个布局文件

res/layout/目录下创建一个名为list_item.xml的文件,内容如下:

代码语言:xml
复制

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

代码语言:txt
复制
android:id="@+id/textView"
代码语言:txt
复制
android:layout_width="match_parent"
代码语言:txt
复制
android:layout_height="wrap_content"
代码语言:txt
复制
android:textSize="16sp"
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android自定义ViewPager水平滑动弹性效果

android ViewPager是一个经常要用到的组件,但android系统本身为我们提供的ViewPager是没有任何效果的,只能是一页一页的滑动,这样会让人感觉很死板,在看一些知名大公司的App时...,看到了他们的ViewPager滑动到最开始或者最后的时候是有一个弹性效果的,使用起来感觉非常的好,于是乎就是百度搜了一下,StackOverflow中看到一篇文章就是讲如何实现这个效果的。...先看下效果图:滑动到最后一页时仍然可以拉动…… ?....view.ViewConfigurationCompat; import android.support.v4.view.ViewPager; import android.util.AttributeSet...; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration

1K30
  • 一文解决Android View滑动冲突

    所以遇到多层嵌套的小伙伴也不用惊慌,一层一层处理即可。 有小伙伴肯定有疑问,ViewPagerListView并没有出现滑动冲突啊。 那是因为ViewPager已经为我们处理了滑动冲突!...如果我们自己定义一个水平滑动的ViewGroup内部再使用ListView,那么是一定需要处理滑动冲突的。 ?...针对上面第一种场景,由于外部与内部的滑动方向不一致,那么我们可以根据当前滑动方向,水平还是垂直来判断这个事件到底该交给谁来处理。至于如何获得滑动方向,我们可以得到滑动过程的两个点的坐标。...比较常见ScrollView嵌套ListView。虽然需求不同,业务逻辑自然也不同,但是解决滑动冲突的方式都是一样的。...处理逻辑ACTION_MOVE,Math.abs(deltaX)>Math.abs(deltaY)表示横向位移增量大于竖向位移增量,即水平滑动,则BadViewPager 拦截事件。

    1.7K30

    RecyclerView详解

    RecyclerView是support-v7包的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用户只要实现自己的...android滑动组件嵌套一般思路,多任务手势思路,触摸传递思路,【例】listview嵌套viewpager 我介绍了ListView嵌套ViewPager显示图片的办法。...要实现Gallery的改动太大,ViewPager替用的滑动体验和原来的Gallery相去甚远。...也就是说,如果你简单地将ViewPager的每页显示数设置为你需要的值,之后设置的动画很可能并不是你需要的效果(因此之前我嵌套时去掉了ViewPager的动画,稍微有点失望)。...·滑动速度加快,因为ViewPager并不是ViewsPager。。。一次长距离的滑动可能只造成1~2张图片的滚动,一点也不像gallery,这是我用RecylcerView替代它的主要原因。

    1.3K100

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ScrollView 里面嵌套ViewPager导致的滑动冲突 ViewPager里面嵌套ViewPager 导致的滑动冲突 轮播图的几种实现方式 文章首发地址CSDN:http://blog.csdn.net...ViewPager里面嵌套ViewPager ?...对于这种效果,上面是轮播图的,下面是RecyclerView或者ListView的,一般有一下几种实现方式 - 使用我们上述提高的ScrollView里面嵌套ViewPager和RecyclerView...,这种实现方式需要自己解决View滑动事件的冲突,同时还有我在上述提高的Fragment存在的问题 - 使用listView的addHeaderView来实现,或者是通过多种不同的item来实现...题外话 在这篇博客的最后提高的实现轮播图+list列表的几种实现形式,刚开始是不想写的,后面因为ScrollView里面嵌套ViewPager和RecyclerViewfragmentRecyclerView

    5.7K51

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    这篇博客主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌套ViewPager导致的滑动冲突 ViewPager里面嵌套ViewPager...里面嵌套ViewPager ViewPager里面嵌套ViewPager ---- View的 事件分发机制 这篇博客不打算详细讲解View的事件分发机制,因为网上已经出现了一系列的好 文章,我自己的水平也有限...界面完全绘制完毕以后回调的方法,如果大家知道怎样处理的 话,欢迎大家提出来 ---- ViewPager里面嵌套ViewPager导致的滑动冲突 内部解决法 从子View ViewPager着手,重写...里面嵌套ViewPager和RecyclerView,这种实现方式需要自己解决View滑动事件的冲突,同时还有我在上述提高的Fragment存在的问题 使用listView的addHeaderView...题外话 在这篇博客的最后提高的实现轮播图+list列表的几种实现形式,刚开始是不想写的,后面因为ScrollView里面嵌套ViewPager和RecyclerViewfragmentRecyclerView

    65810

    Android开发笔记(一百零一)滑出式菜单

    办法肯定是有的,Android开发笔记(三十五)页面布局视图》,我们提到margin和padding都可用来设置空隙,空隙的数值都是正数,其实空隙值也能是负数,负数表示该视图被隐藏了一部分,仿佛一张纸插了部分纸面到书中...具体步骤就是:首先在onTouch方法拦截MotionEvent.ACTION_UP与MotionEvent.ACTION_CANCE进行判断;其次计算当前的滑动偏移,如果滑动距离超过阈值,则继续翻页滑动...问题的症结在于菜单布局和内容布局都在同一个页面,所以极易造成滑动冲突,要想彻底解决滑动冲突,最好还是把两种布局分开到不同页面处理,技术上便是使用不同的Fragment分别放置菜单和内容布局。...即ViewPager自身就是作为内容布局的Fragment嵌入到SlidingMenu,然后ViewPager的子页面也是作为Fragment嵌入到ViewPager,这样就造成了一个问题:Fragment...; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; public class

    1.2K70

    Android开发的那些坑和小技巧

    如果你设置了此属性值为false,就能实现一个布局上事半功陪的效果。先看一个效果图。 ? 上图中的ListView顶部默认有一个间距,向上滑动后,间距消失,如下图所示。 ?...4、ListViewitem点击事件无响应 listView的Item点击事件突然无响应,问题一般是listView中加入了button、checkbox等控件后出现的。这个问题是聚焦冲突造成的。...可是滑动的时候,感觉出现卡顿的现象。聪明的你肯定想到是滑动冲突了。应该是ScrollView的滑动干扰到了ListView滑动。怎么办呢?能不能禁掉ScrollView的滑动?...一开始我发现一个acitivity的scrollView滑动一顿一顿的,而实际上没有嵌套任何的列表控件如ListView、GridView,包含的无非是一些TextView、ImagView等。...看了下Eclipselog输出,发现出现了这个warn级别的提示。难道是我在外层嵌套了这个圆形矩形?我很多地方都用了呀,为何就这个界面出现问题了?

    1.1K30

    AndroidRecycleView与ViewPager冲突的解决方法及原理

    1.概述 实际开发,我们经常遇到需要在ListView或RecycleView头部添加ViewPager实现Banner轮播效果,并需要添加下拉刷新,上拉加载功能。...(1)重写ViewPager import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet...((ViewGroup) mPager.getParent()); (3)布局文件: <com.chunsoft.baseframework.utils.view.DecoratorViewPager...处理ViewPager嵌套RecycleView卡顿问题 ViewPager里面添加了三个Fragment,Fragment里面添加了RecycleView,发现ViewPager左右滑动切换非常不流畅...,存在滑动冲突,使用外部拦截进行处理 so easy~~~ /** * Created by magic on 2017/6/12 0012.外部拦截处理ViewPager嵌套RecycleView左右滑动切换

    1.3K10

    Android嵌套滑动冲突的解决方法

    android嵌套滑动的时候会产生滑动冲突。之前我也碰到,但是以前的笔记本丢失了,所以只能重新再写一章。 一.会产生滑动冲突的情况 那么什么时候会产生滑动冲突呢?...比如你有个activity,activity的上半部分是一个布局,下半部分是一个可滑动控件(RecyclerView、ListView等),或者下半部分是个viewpager,里面的fragment布局是一个可滑动控件...2.布局嵌套其它可滚动控件的情况 就是第一种情况下把RecyclerView换成其它可滑动控件。...3.布局嵌套ViewPagerViewPager嵌套RecyclerView等可滑动控件的情况 这种情况处理起来比较麻烦,而很多人都是碰到这种情况。如下图: ?...这样做就能解决一个activity多个fragment的情况下的滑动冲突。 但是有的朋友说不嘛,我就要Viewpager,我就要酷酷的滑动动画效果。唉,那你就用最实在的第三方法吧。

    3.2K21

    Android开发实现ScrollView嵌套两个ListView的方法

    本文实例讲述了Android开发实现ScrollView嵌套两个ListView的方法。...分享给大家供大家参考,具体如下: 做的项目中要使用两个ListView同一个页面上下显示,因为数据源不同,不能通过Adapter设置标志位去区分显示,最后只能硬着头皮做一个ScrollView嵌套两个...ListViewUtility { // 是一个Scrollview 添加两个Listview的显示布局 public static void setListViewHeightBasedOnChildren...添加到 ListViewUtility,并且两个ListView要填充完再添加,两个ListView的adpter的布局最外层要使用LinearLayout,只有LinearLayout ListViewUtility...才能成功测量每个Item 的高度,不然就会出错 更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android开发入门与进阶教程》、《Android布局

    1.4K20

    Android解决ScrollView下嵌套ListView和GridView内容显示不全的问题

    最近为公司做的一个Demo里面用到了ScrollView嵌套了GridView和ListView,然而在嵌套的时候我发现GridView和ListView都是不能完全显示,显示的基本上都是单行的数据,最后查找资料和翻阅文档看到原因是...ListView和GridView的绘制过程ScrollView无法准确的测量自身的高度,而且listVIew和GridView抢占了焦点,使得ListView和GrideView具有自身的显示的效果...,这样就测量出显示一行条目即可的距离,其他的条目根据自身的滑动显示。...android:paddingTop="-1dp" <android.support.v4.view.ViewPager android:id="@+id/home_pager"...="#ffffff" </ListView </LinearLayout </ScrollView 显示的效果是这样的其中的Listview和GridView是可以滑动的就是显示不全

    2.4K20

    Android开发笔记(一百二十)两种侧滑布局

    SlidingPaneLayout SlidingPaneLayout是Androidandroid-support-v4.jar推出的一个可滑动面板的布局,在前面《Android开发笔记(...一百零一)滑出式菜单》,我们提到水平布局时的LinearLayout无法自动左右拉伸,必须借助于手势事件才能拉出左侧隐藏的布局,现在SlidingPaneLayout便是为了解决LinearLayout...左侧面板与右侧面板的区别在于,左侧面板布局文件的layout_gravity属性为left,而右侧面板布局文件的layout_gravity属性为right。...2、SlidingPaneLayout的侧滑面板滑动时,主页面也跟着往右滑;而DrawerLayout的侧滑面板滑动时,主页面是不会滑动的,也就是说,侧滑面板会遮盖住主页面的部分UI; 3、SlidingPaneLayout...主页面任何位置水平向右滑动,都会拉出左侧面板;而DrawerLayout只有主页面左右边缘水平滑动时,才能拉出侧滑面板; 4、拉出侧滑面板时,SlidingPaneLayout主页面的灰色阴影较浅

    2K30

    Android View滑动冲突全面解析-夯实基础

    滑动冲突这件事我们日常开发应该是经常见,我刚学习Android的时候,viewPager 与 SlidingMenu 侧滑栏的冲突也是搞得我一头雾水,不知道该怎么去解决,所以经常会去采用问百度的做法...这个时候我们就可以根据它们的特征来解决滑动冲突,具体来说:根据滑动水平滑动还时竖直滑动来判断到底谁来拦截事件。 如图所示,根据滑动过程两个点之间的坐标就可以得出到底是水平滑动还时竖直滑动。...我们采用ViewPager+ViewPager嵌套来做。当然理想状态是 RecyclearView+ViewPager更好。 自己的效果:ViewPager默认直接嵌套的效果。...还要记得初始化ViewPager的成员变量 mActivePointerId,其默认值为-1,ViewPager的 onTouchEvent 方法。...以上就是关于滑动冲突的全部内容了,一般解决方法万变不离其宗,无非就是嵌套的深与浅,只要我们理清 事件分发的过程,那么运用以上两种方法再加上一点扩展就可以轻松解决实际开发的问题了。

    42620

    嵌套滑动通用解决方案--NestedScrollingParent2

    京东首页 可见,向上滑动页面时,当tabLayout滑动到顶部时,外层RecyclerView停止滑动,此时tabLayout即为吸顶状态,接着会 滑动ViewPager的内层RecyclerView...NestedScrolling(嵌套滑动)机制,简单说来就是:产生嵌套滑动的子view,滑动前,先询问 嵌套滑动对应的父view 是否优先处理 事件、以及消费多少事件,然后把消费后剩余的部分 继续给到...NestedScrollView嵌套RecyclerView 参考这篇实名反对《阿里巴巴Android开发手册》NestedScrollView嵌套RecyclerView的用法。...* @param target 具体嵌套滑动的那个子类 * @param dx 水平方向嵌套滑动的子View想要变化的距离 * @param dy 垂直方向嵌套滑动的子..., viewPager内的fragment 也有RecyclerView,处理外层、内层 RecyclerView的嵌套滑动问题,类似淘宝、京东首页。

    3.7K31

    ItemTouchHelper 实现交互动画

    当item被拖拽或侧滑时触发 03.简单实现思路 几个方法中代码思路 要想达到上面功能需求,getMovementFlags方法,当用户拖拽或者滑动Item的时候需要我们告诉系统滑动或者拖拽的方向,...onMove方法处理拖拽的回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item的位置的时候被调用。onSwiped方法当Item被滑动删除到不见处理被删除后的逻辑。...让item执行了两种属性动画而已,ItemTouchHelper.Callback中有一个方法可以拿到item被拖拽或滑动时的位移变化,那就是onChildDraw()方法,该方法设置item渐变和缩放属性动画...04.ViewPager嵌套水平RecyclerView横向滑动到底后不滑动ViewPager 05.RecyclerView嵌套RecyclerView的滑动冲突问题 06.RecyclerView...使用Glide加载图片导致图片错乱问题解决 24.ScrollView嵌套RecyclerView问题 要实现在NestedScrollView嵌入一个或多个RecyclerView,会出现滑动冲突,

    3.9K20

    仿淘宝、京东拖拽商品详情(可嵌套ViewPagerListView、WebView、FragmentTabhost)实现效果图实现

    对于电商App,商品详情无疑是很重要的一个模块,观察主流购物App的详情界面,发现大部分都是做成了上下两部分,上面展示商品规格信息,下面是H5商品详情,或者是嵌套了一个包含H5详情及评论列表的ViewPager...scrollview+webview.gif ScrollView+ViewPager 适用场景:底部需要添加多个界面,并且需要滑动 ?...scrollview+viewpager.gif ScrollView+Fragmenttabhost 适用场景:底部需要添加多个界面,但是不需要滑动 ?...,也许ViewGroup本身不能滚动,但是其内部的子View却可以滚动,这时候,就需要递归遍历相关的View,比如对于ViewPager嵌套了包含WebView或者List的Fragment。...最后附上GitHub链接 欢迎 star DragScrollDetailsLayout GitHub链接 作者:看书的小蜗牛 原文链接: 仿淘宝、京东拖拽商品详情(可嵌套ViewPagerListView

    1.2K30
    领券