自定義viewgroup裡面巢狀viewgroup佈局出問題,如fill_parent失效
阿新 • • 發佈:2019-01-29
我的一個新專案用到了一個自定義可以拖動的控制元件,我在網上找到了一個demo,是通過重寫viewgroup來實現的,但是當我真正投入
使用的時候,發現我在裡面自己寫的佈局fill_parent失效,找了一上午終於發現問題,沒有重寫viewgroup裡面的onMeasure方法,
重寫之後發現還是沒有用,原來在我的onlayout方法裡面呼叫了子view 的measure方法。下面直接上部分程式碼了。
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub super.onMeasure(widthMeasureSpec, heightMeasureSpec); final int count = getChildCount(); for (int i = 0; i < count; i++) { getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec); } }
/** * 滑動過後,只要手指離開螢幕,就會呼叫這個方法,這個其實是在調整子view */ @Override protected void onLayout(boolean changed, int left, int top, int right,int bottom) { Log.i(TAG, ">>left: " + left + " top: " + top + " right: " + right + " bottom:" + bottom); for(int i=0;i<getChildCount();i++){ View child = getChildAt(i); child.setVisibility(View.VISIBLE); // child.measure(right-left, bottom-top); //可以看成是在設定view的大小 ,把這一行去掉就好了 child.layout(0 + i * getWidth(), 0, getWidth() + i * getWidth(), getHeight()); } int delta = currentScreenIndex*getWidth()-getScrollX(); scroller.startScroll(getScrollX(),0,delta,0, 500); invalidate(); }