android中改变view位置的几种方法
2014-10-10 19:06
363 查看
1. 调用 layout方法
2. 设置MarginLayoutParams, 然后调用setLayoutParams()
3. 外容器scrollTo 方法。改变view窗体位置。会改变所有的子View位置
public void layout(int l, int t, int r, int b) { int oldL = mLeft; int oldT = mTop; int oldB = mBottom; int oldR = mRight; boolean changed = setFrame(l, t, r, b); if (changed || (mPrivateFlags & LAYOUT_REQUIRED) == LAYOUT_REQUIRED) { if (ViewDebug.TRACE_HIERARCHY) { ViewDebug.trace(this, ViewDebug.HierarchyTraceType.ON_LAYOUT); } onLayout(changed, l, t, r, b); mPrivateFlags &= ~LAYOUT_REQUIRED; if (mOnLayoutChangeListeners != null) { ArrayList<OnLayoutChangeListener> listenersCopy = (ArrayList<OnLayoutChangeListener>) mOnLayoutChangeListeners.clone(); int numListeners = listenersCopy.size(); for (int i = 0; i < numListeners; ++i) { listenersCopy.get(i).onLayoutChange(this, l, t, r, b, oldL, oldT, oldR, oldB); } } } mPrivateFlags &= ~FORCE_LAYOUT; }
2. 设置MarginLayoutParams, 然后调用setLayoutParams()
public void setLayoutParams(ViewGroup.LayoutParams params) { if (params == null) { throw new NullPointerException("Layout parameters cannot be null"); } mLayoutParams = params; requestLayout(); }
3. 外容器scrollTo 方法。改变view窗体位置。会改变所有的子View位置
public void scrollTo(int x, int y) { if (mScrollX != x || mScrollY != y) { int oldX = mScrollX; int oldY = mScrollY; mScrollX = x; mScrollY = y; invalidateParentCaches(); onScrollChanged(mScrollX, mScrollY, oldX, oldY); if (!awakenScrollBars()) { invalidate(true); } } }
相关文章推荐
- Android 改变View位置 setLeft、etRight、setTop、setBottom等在API 11以下的替代方法
- 【Android动态布局】之【使用addView方法时,如何保持已有动态控件位置不被改变】
- android 动态改变控件的位置的方法
- android 开发中获取View视图的宽和高的几种方法
- android 给view赋值的方法有几种?
- Android 几种获得view的宽和高的方法
- android获取view宽高的几种方法 - ysl_longer
- 使用addView方法时,如何保持已有动态控件位置不被改变
- Android TextView 在java代码中改变字体的颜色的方法
- android 开发中获取View视图的宽和高的几种方法
- android 获取view 位置的几种方式
- android TextView改变alpha的方法
- Android View各种尺寸位置相关的方法探究
- android获取view宽高的几种方法
- 【Android 开发】:TextView的几种使用方法
- Android View各种尺寸位置相关的方法探究
- android webView调用js函数的几种方法
- Android tab导航的几种方法:ActionBar tab +fragment,Viewpager+pagerTitleStrip,开源框架ViewPageIndicator 和 ViewPager
- Android RecycleView 的findChildViewUnder()方法,十分方便返回指定位置的childView
- Android开发获取GPS位置,包含基站\wifi\gps 几种方法