
你好,很高兴为你解答
给要添加的view中设置viewsetTag(index); index就是viewGroup的子view的个数,这样通过getTag()就能获取到index了
~如果你认可我的回答,请及时点击采纳为满意回答按钮
~~手机提问的朋友在客户端右上角评价点满意即可。
~你的采纳是我前进的动力
~~O(∩_∩)O,记得好评和采纳,互相帮助,谢谢。
在Android开发过程中,有时需要获取View绘制前的高度或者宽度,一种的可能情形是初始化的时候让某个View的Visible = Gone的,当触发某个事件的时候需要它显示并且希望有一些动画效果。
这时候就要获取这个View显示前即绘制前的宽度或者高度。原理很简单,View的绘制过程发生之前,会先执行onMeasure方法。那么就可以利用反射来获取需要的值。下面给出获取高度的代码,宽度同理。
private int getTargetHeight(View v) {
try {
Method m = vgetClass()getDeclaredMethod("onMeasure", intclass,
intclass);
msetAccessible(true);
minvoke(v, MeasureSpecmakeMeasureSpec(
((View) vgetParent())getMeasuredWidth(),
MeasureSpecAT_MOST), MeasureSpecmakeMeasureSpec(0,
MeasureSpecUNSPECIFIED));
} catch (Exception e) {
}
return vgetMeasuredHeight();
}
拿到这个高度之后就可以做想做的动画效果或者是其他的事情了。
android事件分发机制 就是一个触摸事件发生了,从一个窗口传递到一个视图,再传递到另外一个视图,最后被消费的过程,在android中还是比较复杂的传递流程如下:
(1) 事件从ActivitydispatchTouchEvent()开始传递,只要没有被停止或拦截,从最上层的View(ViewGroup)开始一直往下(子View)传递。子View可以通过onTouchEvent()对事件进行处理。
(2) 事件由父View(ViewGroup)传递给子View,ViewGroup可以通过onInterceptTouchEvent()对事件做拦截,停止其往下传递。
先定位到相应的页卡,比如你有3个页卡分别是View1,View2,View3。
那么你要走在View1中添加就这样写
RelativeLayout insertLayout = (RelativeLayout)View1findViewById(Ridscreen)
View2中就是
RelativeLayout insertLayout = (RelativeLayout)View2findViewById(Ridscreen)
以此类推
你在写Listview的adapter的getview返回的应该是一个包括一张ImageView和一个ProgressBar,的ViewGroup,不管你是用LinearLayout还是其他的layout,总之是个ViewGroup;
你在另个一Activity中,取到ListView里面的View,实际上就是个ViewGroup,可以把这个view强转成ViewGroup对象,再通过getChildAt(0),getChildAt(1),分别取得的子view就是ImageView和ProgressBar。
以上就是关于Android编程之如何取得View的当前位置全部的内容,包括:Android编程之如何取得View的当前位置、android view怎么获取高度、android 如何获取一个界面最顶层的view并处理单击事件的分发机制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)