Android 以编程方式定义视图时,从超类的OnTouch方法获取视图

Android 以编程方式定义视图时,从超类的OnTouch方法获取视图,android,Android,我有一个带有按钮和OnTouchListener(View v,MotionEvent)方法的超类“Central”。“Lay1”是“Central”的活动子类,使用addView()在布局上显示按钮。addView()工作正常,但当我尝试获取v.getX()或所有v方法时,我得到了0值。我知道活动无法“看到”这个“v”,因为它已实现,当我调用v时,它还不存在。我需要一个@override方法将“v”返回给我,但我不知道放在哪里。感谢您的帮助您可以轻松地从超级类获取视图,但首先您必须在活动中放大

我有一个带有按钮和OnTouchListener(View v,MotionEvent)方法的超类“Central”。“Lay1”是“Central”的活动子类,使用addView()在布局上显示按钮。addView()工作正常,但当我尝试获取v.getX()或所有v方法时,我得到了0值。我知道活动无法“看到”这个“v”,因为它已实现,当我调用v时,它还不存在。我需要一个@override方法将“v”返回给我,但我不知道放在哪里。感谢您的帮助

您可以轻松地从超级类获取视图,但首先您必须在活动中放大视图。其次,它取决于为变量定义的视图变量访问类型,或者只是创建获取此视图的方法。此外,在视图膨胀之前,还可以获取视图的宽度或高度为零。此外,要获取视图宽度等,请使用yourView.getViewTreeObserver().addOnGlobalLayoutListener(新ViewTreeObserver.OnGlobalLayoutListener(){@Override public void onGlobalLayout()){//确保只调用一次:yourView.getViewTreeObserver().RemoveGlobalOnlyOutliner(this);//这里可以得到大小:)});获取类似于宽度和高度的视图效果很好。但要返回v.getX或v.getY,例如,此方法返回0。是否有其他方法可以获得此值?谢谢使用view.getwidth()和view.getHeight()方法。