如何解决单击图像视图时使工具栏消失
我想实现一种类似于聚焦模式的功能,本质上是当有人在查看图像时单击图像视图时,除非重新单击,否则工具栏将消失。我相信这可以使用户将更多的精力放在图像上,而不是在工具栏上,除非他们想要图像上的信息。我对此想法进行了修改,并尝试在图像视图上设置onclick功能,这样,一旦单击它,工具栏上的可见性将变为不可见,再次单击该工具栏将使其可见。问题是,即使我正确地设置了算法,我也只能在为其设置的适配器中访问图像视图(例如,在我放置打印语句以查看输入的语句是否成功,并且可以成功运行的情况下),但是发生的是工具栏对它没有反应,好像我无法与之通信。
来自适配器
override fun instantiateItem(container: ViewGroup,position: Int): Any {
val page_layout: View = inflater.inflate(R.layout.activity_viewer,container,false)
val presenter: Toolbar = page_layout.findViewById<View>(R.id.presenter) as Toolbar
val image_layout: View = inflater.inflate(R.layout.view_pager_item,false)
val page_image: PhotoView = image_layout.findViewById<View>(R.id.page_image) as PhotoView
Picasso.get().load(PageList[position].link).into(page_image)
page_image.setOnClickListener(View.OnClickListener {
println("clicked")
println(presenter.visibility)
if (presenter.visibility == View.INVISIBLE) {
println("outside")
presenter.visibility = View.VISIBLE
} else {
println("inside")
presenter.visibility = View.INVISIBLE
}
})
container.addView(image_layout)
return image_layout
}
来自活动的onCreate方法
class Page_Activity : AppCompatActivity() {
lateinit var lstPages: MutableList<Page>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_viewer)
lstPages = ArrayList()
mangaPages()
val myrv = findViewById<View>(R.id.view_page) as ViewPager
myViewPager = PageViewAdapter(this,lstPages)
myrv.adapter = myViewPager
该活动的重点是进行调用,以便有一个充满图像链接的数组,该数组将被扔进适配器,以便我可以在活动中重新显示它。尽管如此,我还是用框架布局测试了这个概念,在这里我攻击了onClickListener,但是由于某种原因,当我对适配器中的图像视图进行操作时,它的行为有所不同。无论如何,对此的任何帮助将非常感谢!谢谢!
解决方法
您的工具栏无法正常运行,因为您正在向适配器中的新工具栏充气。
在此代码中
val page_layout: View = inflater.inflate(R.layout.activity_viewer,container,false)
val presenter: Toolbar = page_layout.findViewById<View>(R.id.presenter) as Toolbar
因此,为了访问您在Page_Activity
中使用过的工具栏,您可以像这样
adapter
到Page_Activity
的回调。
首先,创建一个回调
interface PageImageCallback {
fun onClick()
}
然后,在您的onClick
类中创建变量,setter函数并调用adapter
函数
class Adapter() {
private lateinit var pageImageCallback: PageImageCallback
fun setPageImageCallback(pageImageCallback: PageImageCallback) {
this.pageImageCallback = pageImageCallback
}
...
override fun instantiateItem(container: ViewGroup,position: Int): Any {
val image_layout: View = inflater.inflate(R.layout.view_pager_item,false)
val page_image: PhotoView = image_layout.findViewById<View>(R.id.page_image) as PhotoView
Picasso.get().load(PageList[position].link).into(page_image)
page_image.setOnClickListener(View.OnClickListener {
println("clicked")
pageImageCallback.onClick()
})
container.addView(image_layout)
return image_layout
}
}
最后,在Page_Activity
中实现回调
class Page_Activity : AppCompatActivity(),PageImageCallback {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_viewer)
...
myViewPager.setPageImageCallback(this)
}
...
override fun onClick() {
if (presenter.visibility == View.INVISIBLE) {
println("outside")
presenter.visibility = View.VISIBLE
} else {
println("inside")
presenter.visibility = View.INVISIBLE
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。