没有图像的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自动滚动视图的主要内容,如果未能解决你的问题,请参考以下文章