android - 在android中删除Relativelayout Rule后视图移到顶部
问题描述
我已经使用下面的代码添加RelativeLayout
了。RelativeLayout
var _root: ViewGroup? = null
private var _xDelta: Float = 0F
private var _yDelta: Float = 0F
lateinit var layoutParams: RelativeLayout.LayoutParams
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
_root = findViewById(R.id.root)
_view = RelativeLayout(this)
_view?.setBackgroundColor(Color.BLUE)
layoutParams = RelativeLayout.LayoutParams(280, 280)
layoutParams.leftMargin = 0
layoutParams.topMargin = 0
layoutParams.bottomMargin = 0
layoutParams.rightMargin = 0
// Adding Rule
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
_view?.layoutParams = layoutParams
_view?.setOnTouchListener(this)
_root?.addView(_view)
}
如果我触摸视图并移动手指,它将移动视图以跟随我的手指。下面是它的代码: -
override fun onTouch(view: View, event: MotionEvent): Boolean {
val X = event.rawX
val Y = event.rawY
when (event.action and MotionEvent.ACTION_MASK) {
MotionEvent.ACTION_DOWN -> {
val lParams = view.layoutParams as RelativeLayout.LayoutParams
_xDelta = X - lParams.leftMargin
_yDelta = Y - lParams.topMargin
}
MotionEvent.ACTION_UP -> {
}
MotionEvent.ACTION_POINTER_DOWN -> {
}
MotionEvent.ACTION_POINTER_UP -> {
}
MotionEvent.ACTION_MOVE -> {
// Removing the rule to apply the effects
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_RIGHT)
layoutParams = view.layoutParams as RelativeLayout.LayoutParams
layoutParams.leftMargin = (X - _xDelta).toInt()
layoutParams.topMargin = (Y - _yDelta).toInt()
layoutParams.rightMargin = 0
layoutParams.bottomMargin = 0
view.layoutParams = layoutParams
}
}
_root?.invalidate()
return true
}
但是当我触摸视图时,它会移动到左上角。我希望它只在我的手指触摸区域。我再次触摸后它工作正常。有什么解决办法吗?请帮忙。
解决方案
推荐阅读
- php - PHP MySQL - 获取一位用户撰写的所有帖子的评论数
- python - 如何为 Django Web App 中的每个用户获取唯一的用户数据
- elasticsearch - 弹性搜索 - 强制结果分布在选定的方面(属性)
- reactjs - React map() 不是函数
- c++ - 在可变参数模板上生成变量列表
- javascript - 实现 Javascript 时遇到问题:不工作
- reactjs - 为什么 JavaScript setDate 不返回日期?
- sql - VBA 列限制中的 SQL 命令
- c# - EF Core:自动生成的自定义格式序列号
- swift - 种子 SwiftUI Canvas CoreData 数据库