没有图像的Android自动滚动视图

Posted

技术标签:

【中文标题】没有图像的Android自动滚动视图【英文标题】:Android Autoscrolling view without images 【发布时间】:2021-07-22 15:34:07 【问题描述】:

我目前正在尝试实现一个类似横幅的视图,其中给定一个字符串列表,当每个字符串到达​​屏幕中心时,视图将一个接一个地循环显示每个字符串。我想做的一个例子如下

html 中,这个元素是来自 swiperjs 的 swiper 幻灯片,然而,android 没有原生元素可以简单地做到这一点。

我已经在网上看了几天,使用自定义 RecyclerView 测试各种实现,带有选框的简单 TextView(没有我想添加的暂停),并发现大多数“解决方案”都是围绕围绕 RecyclerView、ListView 或 ViewPager,通常使用 TimerTask 来处理滚动时间。

不幸的是,我没有找到任何有效的实现,也没有任何关于哪种视图最​​适合使用的指示。

所有解决方案都实现了一个图像和一个点选择器,显示列表中的哪个图像显示在屏幕上,但我绝对不希望有一个图像,我只想要一个具有相同功能的 TextView。在有人问之前,是的,我尝试用 TextView 简单地替换图像,但它根本不起作用。

需要注意的一个重要方面是,由于我只是想让一些文本滚动到视图中,我认为 ViewPager 不是一个有效的解决方案,因为我根本没有实现一些滚动片段。这是屏幕元素如何布置的布局(注意这是 MainActivity 屏幕,我在其中有一个用于所有其他片段的片段主机):

+-------------+-------------+
|             |   Toolbar   |
|             |-------------+
|             |    Banner   |
|             |-------------+
| Nav Drawer  |             |
|             |             |
|             |  Fragment   |
|             |             |
|             |             |
+-------------+-------------+

欢迎任何关于如何实现此功能的指导。

【问题讨论】:

【参考方案1】:

我是这样使用 LoopingViewPager 的。

第 1 步:在您的应用 gradle 中添加依赖项

implementation 'com.asksira.android:loopingviewpager:1.1.2'

第 2 步:在您的活动/片段中添加以下代码

    val sliderAdapter = SliderAdapter(this, arrayListOf("Your Text here","Your Text here","Your Text here"))

    val viewPager=findViewById<LoopingViewPager>(R.id.viewPager)

    viewPager.adapter = sliderAdapter

第 3 步:在 Activity/Fragment 布局中添加 LoopingViewPager 视图

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">

    <com.asksira.loopingviewpager.LoopingViewPager
        android:id="@+id/viewPager"
        android:layout_
        android:layout_
        android:clickable="true"
        app:autoScroll="true"
        app:isInfinite="true"
        app:scrollInterval="3000"
        app:wrap_content="true" />

</LinearLayout>

第四步:为 LoopingViewPager 创建适配器

class SliderAdapter(context: Context, val itemList2: ArrayList<String>) :

LoopingPagerAdapter<String>(context, itemList2, true) 

override fun inflateView(viewType: Int, container: ViewGroup?, listPosition: Int): View 
    return LayoutInflater.from(context).inflate(R.layout.slider_layout, container, false)


override fun bindView(convertView: View?, listPosition: Int, viewType: Int) 

    var a = itemList2.get(listPosition)
    convertView?.findViewById<TextView>(R.id.textView)?.text=a


第 5 步:为项目创建布局

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:orientation="vertical">


    <TextView
        android:id="@+id/textView"
        android:layout_
        android:layout_
        android:text="TextView" />

</LinearLayout>

【讨论】:

我会试试这个并回复你!谢谢 完美运行!不得不修改答案的一些元素,例如可以为空的参数,但完美的解决方案。非常感谢!

以上是关于没有图像的Android自动滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

Android:滚动图像视图

Android ScrollView 自动滚动到视图底部

有没有办法在结合页面控制的滚动视图中自动布局图像?

自动滚动:如何在滚动视图中自动滚动图像

在滚动视图中使用自动布局缩放图像如何居中?

列表视图的 Android LazyList 初始加载在滚动之前不显示图像