Your implementation of onLayout() is totally busted. Do NOT call
layout() or requestLayout() from that method. onLayout() should only
be used to layout your children, if any.

On Wed, Apr 22, 2009 at 12:21 AM, Ah-Hsin <tw.ahh...@gmail.com> wrote:
>
> Hi,
> I have a LinearLayout with two views inside, the inside view is a
> custom view.
> Drawing problem I am facing,  my custom view just draws six rects on
> itself, please see RecView.java (shown as bellow).
> It is only one view can be drawn on screen, why? I aslo used hierarchy
> viewer to check layout correctly,  two custom views are also shown on
> viewer ().
>
> Emulator and hierarchy viewer screen capture are shown as bellow link.
> http://picasaweb.google.com/tw.ahhsin/Android_Groups?feat=directlink
>
> Anyone know what problem is my program? thanks for any responses.
>
> RecView.java
>
> public class RecView extends View {
>        final private static String TAG = "RecView";
>        private Paint mPaint;
>
>        private int mCount;
>
>        public RecView(Context context, int count) {
>                super(context);
>                mPaint = new Paint();
>                mPaint.setColor(getResources().getColor(R.color.background));
>                mCount = count;
>        }
>
>       �...@override
>        protected void onDraw(Canvas canvas) {
>                super.onDraw(canvas);
>
>                int left = getLeft();
>                int top = getTop();
>                int right = getRight();
>                int bottom = getBottom();
>                Rect rec1 = new Rect(0, top, 50, bottom);
>                Rect rec2 = new Rect(50, top, 100, bottom);
>                Rect rec3 = new Rect(100, top, 150, bottom);
>                Rect rec4 = new Rect(150, top, 200, bottom);
>                Rect rec5 = new Rect(200, top, 250, bottom);
>                Rect rec6 = new Rect(250, top, 300, bottom);
>
>                //Drawing six rects
>                mPaint.setColor(getResources().getColor(R.color.solid_blue));
>                canvas.drawRect(rec1, mPaint);
>                canvas.drawRect(rec3, mPaint);
>                canvas.drawRect(rec5, mPaint);
>                mPaint.setColor(getResources().getColor(R.color.solid_red));
>                canvas.drawRect(rec2, mPaint);
>                canvas.drawRect(rec4, mPaint);
>                canvas.drawRect(rec6, mPaint);
>
>        }
>
>       �...@override
>        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
> {
>                setMeasuredDimension(300, 50);
>        }
>
>       �...@override
>        protected void onLayout(boolean changed, int left, int top, int
> right, int bottom) {
>
>                if(changed && left >= (320 - left)) {
>                        int newleft = 0;
>                        int newTop = (mCount-1)*50;
>                        int newBottom = mCount*50;
>                        layout(newleft, newTop, 300, newBottom);
>                        super.onLayout(changed, newleft, newTop, 300, 
> newBottom);
>                } else {
>                        super.onLayout(changed, left, top, right, bottom);
>                }
>
>                requestLayout();
>        }
> }
>
>
> RecViewActivity.java
>
> public class RecViewActivity extends Activity {
>
>        public RecViewActivity() {}
>
>       �...@override
>        protected void onCreate(Bundle savedInstanceState) {
>                super.onCreate(savedInstanceState);
>
>                setContentView(R.layout.main);
>        }
>
>       �...@override
>        protected void onResume() {
>                super.onResume();
>
>                LinearLayout layout = (LinearLayout) 
> findViewById(R.id.main_view);
>                layout.setWillNotDraw(false);
>                RecView view = null;
>                for(int i = 1; i < 3; i++) {
>                        view = new RecView(this, i);
>                        layout.addView(view);
>                }
>        }
> }
>
>
> >
>



-- 
Romain Guy
Android framework engineer
romain...@android.com

Note: please don't send private questions to me, as I don't have time
to provide private support.  All such questions should be posted on
public forums, where I and others can see and answer them

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to