为了允许水平滚动,我重写了onInterceptTouch(MotionEvent)。然而,我发现我无法检测到用户何时触摸了嵌入式v。View上的x、y类似于2000、2400,而MotionEvent.getX(),getY()是像400,500Viewv=findViewById(R.id.myView);Rectr=newRect();v.getHitRect(r);int[]loc=newint[2];v.gtLocationOnScreen(loc);intx=loc[0];inty=loc[1];//Resultx,yarehugenumbers2400,etc//even
“点击父坐标中的矩形”。但这意味着什么?为了放大,我真正想知道的是短语“hitrectangle”的含义。它是做什么用的?框架如何处理它?在生命周期中什么时候返回值有意义?它与getLeft()、getTop()、getRight()、getBottom()?根据函数的名称我当然可以猜出一个答案,并尝试了几个例子,但这并不令人满意。我在AndroidDeveloper网站或其他任何地方都找不到有关此功能的有用信息。 最佳答案 Here似乎是最完整的解释。ThegetHitRect()methodgetsthechild'shitre
我正在使用以下代码创建View的触摸委托(delegate)。问题是我想增加可点击区域的View位于非常狭窄的LinearLayout内部。所以下面的代码可以增加我的View的可点击区域,但仅限于我狭窄的LinearLayout范围内。我想传递给这个函数的不是父类而是myView的祖父类(myView.getParent().getParent())。它是一个RelativeLayout,它有更大的可点击区域空间。但随后touchRect将指向错误的位置,并且我的TouchDelegate的位置将不正确..因为:delegate.getHitRect(touchRect);返回相对于p
我有一个简单的布局:在我的Activity中,我在更改按钮的y位置后打印hitrectofbutton:publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}publicvoidanimate(Viewview){printHitRect();findViewById(R.id.button1).set