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

在android viewpager 2中,点指示器,要禁用点击事件窗体点指示器,不工作

在Android ViewPager 2中,点指示器是用来显示当前页面位置的小圆点或其他形式的指示器。如果你想禁用点击事件,即点击指示器时不触发任何操作,可以通过自定义指示器来实现。

首先,你需要创建一个自定义的指示器布局,例如一个LinearLayout,其中包含多个ImageView作为指示器的小圆点。然后,在ViewPager的适配器中,监听ViewPager的页面切换事件,根据当前页面的位置来更新指示器的状态。

以下是一个示例代码:

  1. 创建自定义指示器布局(indicator_layout.xml):
代码语言:txt
复制
<LinearLayout
    android:id="@+id/indicatorLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/indicator1"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:src="@drawable/indicator_unselected" />

    <ImageView
        android:id="@+id/indicator2"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:src="@drawable/indicator_unselected" />

    <!-- 添加更多的ImageView作为指示器 -->

</LinearLayout>
  1. 在ViewPager的适配器中,监听页面切换事件并更新指示器的状态(CustomPagerAdapter.java):
代码语言:txt
复制
public class CustomPagerAdapter extends PagerAdapter {

    private Context context;
    private LinearLayout indicatorLayout;
    private ImageView[] indicators;

    public CustomPagerAdapter(Context context, LinearLayout indicatorLayout) {
        this.context = context;
        this.indicatorLayout = indicatorLayout;
        this.indicators = new ImageView[indicatorLayout.getChildCount()];
        for (int i = 0; i < indicatorLayout.getChildCount(); i++) {
            indicators[i] = (ImageView) indicatorLayout.getChildAt(i);
        }
    }

    @Override
    public int getCount() {
        // 返回ViewPager的页面数量
        return 3;
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        // 实例化ViewPager的页面
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.page_layout, container, false);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        // 销毁ViewPager的页面
        container.removeView((View) object);
    }

    @Override
    public void onPageSelected(int position) {
        // 页面切换时更新指示器的状态
        for (int i = 0; i < indicators.length; i++) {
            if (i == position) {
                indicators[i].setImageResource(R.drawable.indicator_selected);
            } else {
                indicators[i].setImageResource(R.drawable.indicator_unselected);
            }
        }
    }
}
  1. 在Activity中使用ViewPager和自定义指示器(MainActivity.java):
代码语言:txt
复制
public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private LinearLayout indicatorLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager = findViewById(R.id.viewPager);
        indicatorLayout = findViewById(R.id.indicatorLayout);

        CustomPagerAdapter adapter = new CustomPagerAdapter(this, indicatorLayout);
        viewPager.setAdapter(adapter);
    }
}

在上述代码中,我们通过自定义指示器布局和ViewPager的适配器来实现了禁用点击事件的点指示器。你可以根据自己的需求修改指示器的样式和布局,并根据实际情况调整适配器中的页面数量和页面内容。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mmp
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse

请注意,以上链接仅供参考,具体的产品选择和推荐应根据实际需求和情况进行评估。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android自定义图片轮播Banner控件使用解析

它可以用来动态的展示多个图片,之前写过两篇博客:实现ViewPager无限循环的方式一和实现ViewPager无限循环的方式二,在这两篇博客中,分析了两种实现ViewPager无限循环的原理,但是使用的过程中...功能特点 支持自定义宽高比例 支持自定义图片切换时间 支持自定义指示的颜色 支持自定义指示的背景色 支持自定义指示的高度 支持是否显示指示 支持每个图片设置不同的点击事件 使用简单 <com.xiaomai.bannerview.BannerView...android:id="@+id/bannerView" android:layout_width="wrap_content" android:layout_height="...,默认显示 private int indicatorHeight;// 指示器的高度,默认35dp private int indicatorPositionSize; // 指示器的大小...(lastPosition + 1); handler.postDelayed(updateRunnable, updateTime); } /** * 点击监听回调事件 */ public interface

1.1K30

Android】造轮子:轮播图

、自动播放可控制 还有我们都比较关注的一:这轮子必须易拆、易装,可扩展性强。...那就看图吧(还好会那么一PS) 例: 需要显示三张图: ? 需要轮播的图片 经过处理,变成这样 ? 处理后的轮播图 界面上看到的是三张图片,而实际ViewPager中的是这样的5张。...后面有两个LinearLayout,第一个LinearLayout用来放指示器java代码中动态添加;第二个LinearLayout就用来显示Title了,当然,如果还需要显示的其他内容,可以在这个布局里面中添加..." android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id...(这段时间忙着找工作,就先搁下了,有兴趣的同学可以先尝试下。)

1.8K50
  • BGABanner-Android

    、手指按下暂停轮播、抬起手指开始轮播 [x] 支持自定义指示器位置和广告文案位置 [x] 支持图片指示器和数字指示器 [x] 支持 ViewPager 各种切换动画 [x] 支持选中特定页面 [...x] 支持监听 item 点击事件 [x] 加载网络数据时支持占位图设置,避免出现整个广告条空白的情况 [x] 多个 ViewPager 跟随滚动 使用 1.添加 Gradle 依赖 把 maven..., BGABanner 里已经帮开发者处理了防止重复点击事件 mContentBanner.setDelegate(new BGABanner.Delegate(..." + position, Toast.LENGTH_SHORT).show(); }}); 5.设置「进入按钮」和「跳过按钮」控件资源 id 及其点击事件,如果进入按钮和跳过按钮有一个不存在的话就传...0, BGABanner 里已经帮开发者处理了防止重复点击事件 BGABanner 里已经帮开发者处理了「跳过按钮」和「进入按钮」的显示与隐藏 mContentBanner.setEnterSkipViewIdAndDelegate

    9510

    HorizontalScrollView

    一、概述、 水平滚动条 可以左右滑动 可与ViewPager协同使用 二、HorizontalScrollView里边只能放一个子元素 可以放一个Layout布局对象来盛放多个元素 里边可以设置指示器...和一条基准线 可以用来做导航栏类似于ActionBar的Tab导航栏,HorizontalScrollView做导航栏可以设置指示器跟随ViewPager页面移动实现动态效果 一般点击导航栏的某一项...selectNav(0);//默认选择第一页 42 } 43 44 private void navLayoutEvent() { 45 // TODO 设置导航模块的点击事件...相关的事件 65 vPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 66...method stub 86 } 87 }); 88 } 89 90 //选择导航模块的位置,将水平滚动控件滚动到当前模块位置的中心

    47810

    Material Design整理(八)——TabLayout

    简介 一般我们的app主界面都是界面下方或者上方有指示器,结合ViewPager或者Fragment来实现。...如今,Android中也有自带这种指示器的控件TabLayout。TabLayout存在于android design库中,它提供了一个水平的布局来展示Tabs。...其中text就是指示器的文字提示。 当然了,不仅可以居中直接添加TabItem子标签,这样可变性不好,我们可以代码中动态添加,节后会介绍到!...---- 4、添加TabItem标签的点击事件 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {...有以下属性支持修改: tabIndicatorColor:指示器颜色 tabBackground:tablayout的背景颜色 tabIndicatorHeight:指示器高度 tabGravity:指示器位置

    1.4K10

    android 自定义Viewpager实现无限循环

    本以为单纯的ViewPager就可以实现这些功能。但是蛋疼的事情来了,ViewPager并不支持循环翻页。所以实现循环还得需要自己去动手。...将触发重新计算指示器指向         setIndicator(0);           viewPager.setOffscreenPageLimit(3);           viewPager.setOnPageChangeListener...(showPosition);       }   /**      * 设置指示器居中,默认指示器右方      */ public void setIndicatorCenter...滚动             isScrolling = true;   return;           } else if (arg0 == 0) { // viewPager滚动结束...中,为了进行滚动时阻断父ViewPager滚动,可以 阻止父ViewPager滑动事件      * 父ViewPager需要实现ParentViewPager中的setScrollable方法

    3.3K70

    ViewPager轻松完成TabHost效果

    当然具体实现又会有很多方式,我们本期就先来学习最简单的Tab切换吧,有一类似于之前了解的TabHost。...如果只添加PagerTabStrip可以看到只有线,但是它占的布局是有一定高度的,而且默认是不显示标题的,如果显示出来,需适配器里重写getPageTitle(int position)方法。...关于标题及这条线的颜色,和整个标识View的背景,都可以代码里设置。 还有一个区别就是,PagerTabStrip可以点击切换View,而PagerTitleStrip不能点击。...其默认显示顶部,还可以通过android:layout_gravity 属性设置为TOP或BOTTOM将它显示ViewPager的顶部或底部。...void onPageScrollStateChanged(int state) { } } 可以发现这里的代码和上期大致相同,只是在其中增加了滑块的位置及动画设置,为3个Tab标签监听了点击事件

    1.6K70

    打造一个灵活易用的Banner组件

    我想要的组件希望能做到以下几点: 轮播图每页的UI可以定制同时保持较小的工作指示器的位置、大小、背景、字体颜色、字体大小等等都可以定制 一些特殊情况,比如下图这样的可以灵活优雅地实现。...目标 将Banner的两部分分开,一部分是轮播图,另一部分是指示器,然后通过一个“”将二者联系起来。两者本身都是单独的View,这样的话就可以父布局中任意调整大小和位置。...常见的指示器有下面几种: 指示器 ? ? 数字指示器 ? 标题指示器 ? 通过分析我们知道其实呢,每种指示器需要知道两件事,一是一共有多少个页面,二是当前是哪个页面。...当然标题指示器稍微特别一,需要知道每个页面对应得标题是什么,特殊情况特殊处理就好了。...方法校正 由于循环的实现方式,会导致ViewPager本身的一些方法都不能正常工作了,主要是一些和position相关的地方,需要修正。

    93650

    Android实现渐变启动页和带有指示器的引导页

    AlphaAnimation animation= new AlphaAnimation(this); //设置动画的持续时间 animation.setDuration(3000); //给渐变的控件设置动画...,圆点指示器的线性布局linearlayout,最后一页的 “进入应用”按钮。..." android:layout_height="match_parent" <android.support.v4.view.ViewPager android:id="@+id/guide_vp...,这里值得一提的是我们给各圆点设置相应的点击事件,当点击某个位置的圆点时,viewpager自动切换到相应位置的图片,不过实际应用中这里实用性不是很大,因为圆点太小,可触摸范围有限,点击事件不太好触发。...="false"/ </selector 最后一个页面点击 “进入应用”按钮跳转到主页时,将缓存中的isFirst数据改为1,以后打开应用则不会再进入引导页面了。

    98251

    Carson带你学Android:一款易用、好用的Android图片轮播库

    对于循环播放:自动、定时、无限 & 循环播放 对于支持手动切换:滑动流畅 & 无卡顿 对于支持加载本地 & 网络图片:加载速度 & 点击打开图片 好了你终于明白为什么选择轮子了 2....性能的优化 上面说的一切一切,比如说轮播是用ViewPager实现,但会出现卡顿什么的blabla 配置程度高 可灵活设置图片数量、循环时间、图片加载的方式、指示器的样式&位置等等 简洁易用 千万别忘了我们为什么要用轮子...指示器居中 //Banner.RIGHT 指示器居右 banner.setIndicatorGravity(Banner.CENTER); //设置轮播显示的标题和图片对应...load(url).into(view); System.out.println("加载完"); } }); //设置点击事件...,下标是从1开始 banner.setOnBannerClickListener(new Banner.OnBannerClickListener() {//设置点击事件

    1.2K20

    Android美团首页分类按钮(含音频教程)

    R.layout.viewpager_page ? 2.2 设置soreButton监听事件(具体的可以参考GIt上面的Demo) ?...界面:分为两部分,上面的按钮以及下面的指示。上面使用ViewPager作为View的容器,下面的指示器用LinearLayout将动态创建的ImageView添加进去。...和普通的布局没啥区别,外层LinearLayout垂直布局,其中有ViewPager作为滑动切换的容器,内部的LinearLayout作为指示器容器。 2....定义了一个数组,用来放置指示器,通过循环pageSize来动态创建ImageView,然后判断i来将第一页的ImageView设置为选中的,其余设置为未选中的。...当然这样还不行,viewPager滑动的时候我们得更新指示器上的 我们对ViewPager设置了监听事件setOnPageChangeListener,滑动的时候会调用onPageSelected

    79340

    android viewpager实现轮播「建议收藏」

    本文是基于ViewPager实现的无限自动轮播banner: 分为四步去实现: 第一步是有限手动轮播; 第二步是无限轮播; 第三步是自动轮播; 第四步是指示器适配 第一步:有限手动轮播实现 布局: <...androidx.viewpager.widget.ViewPager android:id="@+id/banner" android:layout_width="match_parent...时,ViewPager的高度一定要有确定值,否则内容无法加载出来,可以xml中指定,也可以代码设定,但一定要有确定值。...第二步:无限轮播 无限轮播只需要在有限轮播的基础上,做以下两个改动,修改getCount返回值且加载数据时获取正确的数据源即可 public class BannerAdapter extends...指示器样式及表现可以自己去根据需求实现,以相对简单和常见的小圆圈指示器为例,添加和banner数量相同的小圆圈,小圆圈设置selector,选中时为黑色选中样式,非选中时为灰色默认样式,根据当前选中的

    71320

    Android原生TabLayout使用全解析,看这篇就够了

    TabLayout作为导航组件来说,使用场景非常的多,也意味着满足各种各样的需求。...play;有了这两,基本可以放心大胆的使用官方组件了。...可以设置带数字的红点,也可以设置没有数字单纯的一个。...这里有一个优化的,比如上图中的“腾讯”Tab,它是可见的,但是红点不可见,那么问题就来了,如果我们没有提示到,是很容易产生客诉的,所以这里计算的时候也加了一个条件,就是可见范围小于80%也计算范围之内...指示器颜色 tabIndicatorHeight 指示器高度,不显示写0dp tabIndicatorFullWidth 指示器宽度是否撑满item tabMode tab显示形式,1.auto自动,

    9.1K41

    Carson带你学Android:底部顶部Tab导航栏快速实现-TabLayout+ViewPager+Fragment

    概念介绍 1.1 TabLayout 定义:实现Material Design效果的控件库(Android Design Support Library); 作用:用于实现点击选项进行切换选项卡的自定义效果...的介绍 1.3 Fragment 定义:Fragment是activity的界面中的一部分或一种行为 1.把Fragment认为模块化的一段activity 2.它具有自己的生命周期,接收它自己的事件...总体设计思路 TabLayout:点击切换选项卡 Fragment:存放不同选项的页面内容 ViewPager:实现页面的左右滑动效果 3....步骤1:Gradle中添加依赖 //TabLayout compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support...="#ffff00" //指示器颜色 app:tabIndicatorColor="#66ff33" //指示器高度 app:tabIndicatorHeight

    1.6K21

    一个支持Fragment,View,图片轮播的Banner

    之前有一个项目中有用到轮播,不过不是简单的轮播图片就完了,而是轮播很多个View,一开始我的想法和大家一样github一个算了,哈哈,不过试用了很多个项目之后都觉得不能完全满足我的需求,大部分还是针对于图片轮播的场景...LoopViewPager LoopViewPager是这个库的关键类,其内部最基本的实现类其实还是android自带的ViewPager,代码如下: public void initViewPage(...); } 在这里我们知道,LoopViewPager里面其实最主要就是包裹着ViewPage而已,至于指示器后面讲。...,通过initView()遍历ImageView,再通过addView添加,这就完成了指示器界面初始化。...,然后相减,就是两之间的间距。

    1.9K30

    首页-底部&顶部Tab导航(菜单栏)的实现:TabLayout+ViewPager+Fragment

    概念介绍 1.1 TabLayout 定义:实现Material Design效果的控件库(Android Design Support Library); 作用:用于实现点击选项进行切换选项卡的自定义效果...2.它具有自己的生命周期,接收它自己的事件,并可以activity运行时被添加或删除 3.Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的...总体设计思路 TabLayout:点击切换选项卡 Fragment:存放不同选项的页面内容 ViewPager:实现页面的左右滑动效果 ---- 3....步骤1:Gradle中添加依赖 //TabLayout compile 'com.android.support:support-v4:23.4.0' compile 'com.android.support...="#ffff00" //指示器颜色 app:tabIndicatorColor="#66ff33" //指示器高度 app:tabIndicatorHeight

    4K20
    领券