提问人:doker797 提问时间:11/4/2023 更新时间:11/4/2023 访问量:30
如何在动态添加和修改的视图之间创建障碍
how to create barriers between dynamically added and modified views
问:
我以编程方式添加 View 对象,然后能够通过在布局中拖动它们来更改它们的 X 和 Y,但它们有一个问题,即一个对象可以超出另一个对象的边界。我需要它与另一种观点相对立,而不是超越它。怎么做? 这是我的代码:
private fun drawobject(context: Context?) {
val r: Resources = getResources()
val px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 100F,
r.getDisplayMetrics()).toInt() // Convert mm to px
val objectconteiner: LinearLayout = requireView().findViewById(R.id.progressBar_container)
var ViewLayoutParams: ViewGroup.LayoutParams = ViewGroup.LayoutParams(
100, 20)
var imageView:View = View(context)
imageView.setLayoutParams(ViewLayoutParams)
imageView.setBackgroundColor(Color.RED)
var initialX:Float? = null
var initialY:Float? = null
var initialTouchX:Float? = null
var initialTouchY:Float? = null
imageView.setOnTouchListener { v, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
initialX = event!!.getX()
initialY = event!!.getY()
imageView.setBackgroundColor(Color.BLACK)
//Log.e("211", "$initialX")
}
MotionEvent.ACTION_MOVE -> {
binding.Hsc.setSwipeable(false) //ban on scrollview movement
binding.Vsc.setSwipeable(false)
initialTouchX = (event!!.getX() - initialX!!)
initialTouchY = (event!!.getY() - initialY!!)
var actualX = imageView.x + initialTouchX!!
var actualY = imageView.y + initialTouchY!!
imageView.setX(actualX!!)
imageView.setY(actualY!!)
//Log.e("2", "$px")
//Log.e("2", "$actualX")
}
MotionEvent.ACTION_UP -> {
//Log.e("2", "gh")
binding.Hsc.setSwipeable(true)
binding.Vsc.setSwipeable(true)
}
}
true
}
imageView.setBackgroundColor(Color.RED)
objectconteiner.addView(imageView)
}
视图在 LinearLayout、XMl 中加载:
<LinearLayout
android:orientation="horizontal"
android:id="@+id/progressBar_container"
android:layout_width="100mm"
android:layout_height="100sp"
android:layout_marginTop="100sp"
android:layout_marginLeft="100sp"
android:background="@color/back">
</LinearLayout>
据我了解,您需要在设置X,Y时设置限制,但是如何获取另一个对象的X和Y边界。我用 Kotlin 写作,但我也懂 java,如果你知道如何解决这个问题,请回答 java 或 kotlin。
答: 暂无答案
评论