如何解决在Kotlin中放大/缩小滚动视图
首先,我使用下面的网站作为参考,并直接放大表格。但是这里没有任何错误,但是没有用。 https://developer.android.com/training/gestures/scale#kotlin
之后,我尝试在scrollview中制定可缩放的时间表。但是同样的问题又发生了。
注意: 时间表中有一个片段,所以我使用了2个setContentView。
class MainActivity : AppCompatActivity() {
private lateinit var mScaleDetector: ScaleGestureDetector
private var scaleFactor = 1.0f
private lateinit var table : ScrollView
lateinit var gestureDetector :GestureDetector
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.fragment_week_timetable)
gestureDetector = GestureDetector(this,GestureListener())
mScaleDetector = ScaleGestureDetector(this,ScaleGestureDetector.SimpleOnScaleGestureListener())
table = findViewById<ScrollView>(R.id.scrollView2)
mScaleDetector = ScaleGestureDetector(this,ScaleListener())
setContentView(R.layout.activity_main)
}
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
super.dispatchTouchEvent(ev)
mScaleDetector.onTouchEvent(ev)
gestureDetector.onTouchEvent(ev)
return gestureDetector.onTouchEvent(ev)
}
private inner class ScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener() {
override fun onScale(scaleGestureDetector: ScaleGestureDetector): Boolean {
scaleFactor *= scaleGestureDetector.scaleFactor
scaleFactor = max(0.1f,min(scaleFactor,10.0f))
table.scaleX = scaleFactor
table.scaleY = scaleFactor
return true
}
}
private class GestureListener : GestureDetector.SimpleOnGestureListener() {
override fun onDown(e: MotionEvent): Boolean {
return true
}
override fun onDoubleTap(e: MotionEvent): Boolean {
return true;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。