示例#1
0
        public void OnDragEnd()
        {
            // TODO Auto-generated method stub

            MyAbsoluteLayout.LayoutParams startHandleParams = (MyAbsoluteLayout.LayoutParams)mStartSelectionHandle.LayoutParameters;
            MyAbsoluteLayout.LayoutParams endHandleParams   = (MyAbsoluteLayout.LayoutParams)mEndSelectionHandle.LayoutParameters;

            float scale = GetDensityIndependentValue(Scale, mContext);

            float startX = startHandleParams.X - ScrollX;
            float startY = startHandleParams.Y - ScrollY;
            float endX   = endHandleParams.X - ScrollX;
            float endY   = endHandleParams.Y - ScrollY;

            startX = GetDensityIndependentValue(startX, mContext) / scale;
            startY = GetDensityIndependentValue(startY, mContext) / scale;
            endX   = GetDensityIndependentValue(endX, mContext) / scale;
            endY   = GetDensityIndependentValue(endY, mContext) / scale;


            if (mLastTouchedSelectionHandle == SELECTION_START_HANDLE && startX > 0 && startY > 0)
            {
                string saveStartString = Java.Lang.String.Format(Locale.Us, "javascript: android.selection.setStartPos(%f, %f);", startX, startY);
                LoadUrl(saveStartString);
            }

            if (mLastTouchedSelectionHandle == SELECTION_END_HANDLE && endX > 0 && endY > 0)
            {
                string saveEndString = Java.Lang.String.Format(Locale.Us, "javascript: android.selection.setEndPos(%f, %f);", endX, endY);
                LoadUrl(saveEndString);
            }

            mDragging = false;
        }
        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
            int count = ChildCount;

            int paddingL = PaddingLeft;
            int paddingT = PaddingTop;

            for (int i = 0; i < count; i++)
            {
                View child = GetChildAt(i);
                if (child.Visibility != ViewStates.Gone)
                {
                    MyAbsoluteLayout.LayoutParams lp = (MyAbsoluteLayout.LayoutParams)child.LayoutParameters;

                    int childLeft = paddingL + lp.X;
                    int childTop  = paddingT + lp.Y;

                    /*
                     * int childLeft = mPaddingLeft + lp.x;
                     * int childTop = mPaddingTop + lp.y;
                     */
                    child.Layout(childLeft, childTop, childLeft + child.MeasuredWidth, childTop + child.MeasuredHeight);
                }
            }
        }
        protected override void OnMeasure(int widthMeasureSpec, int heightMeasureSpec)
        {
            int count = ChildCount;

            int maxHeight = 0;
            int maxWidth  = 0;

            // Find out how big everyone wants to be
            MeasureChildren(widthMeasureSpec, heightMeasureSpec);

            // Find rightmost and bottom-most child
            for (int i = 0; i < count; i++)
            {
                View child = GetChildAt(i);
                if (child.Visibility != ViewStates.Gone)
                {
                    int childRight;
                    int childBottom;

                    MyAbsoluteLayout.LayoutParams lp = (MyAbsoluteLayout.LayoutParams)child.LayoutParameters;

                    childRight  = lp.X + child.MeasuredWidth;
                    childBottom = lp.Y + child.MeasuredHeight;

                    maxWidth  = Math.Max(maxWidth, childRight);
                    maxHeight = Math.Max(maxHeight, childBottom);
                }
            }

            // Account for padding too
            maxWidth  += PaddingLeft + PaddingRight;
            maxHeight += PaddingTop + PaddingBottom;

            /* original
             * maxWidth += mPaddingLeft + mPaddingRight;
             * maxHeight += mPaddingTop + mPaddingBottom;
             */

            // Check against minimum height and width
            maxHeight = Math.Max(maxHeight, SuggestedMinimumHeight);
            maxWidth  = Math.Max(maxWidth, SuggestedMinimumWidth);

            SetMeasuredDimension(ResolveSize(maxWidth, widthMeasureSpec), ResolveSize(maxHeight, heightMeasureSpec));
        }
示例#4
0
        protected void DrawSelectionHandleMessage(Message m)
        {
            MyAbsoluteLayout.LayoutParams startParams = (MyAbsoluteLayout.LayoutParams)mStartSelectionHandle.LayoutParameters;
            startParams.X = (int)(mSelectionBounds.Left - mStartSelectionHandle.Drawable.IntrinsicWidth);
            startParams.Y = (int)(mSelectionBounds.Top - mStartSelectionHandle.Drawable.IntrinsicHeight);

            // Stay on screen.
            startParams.X = (startParams.X < 0) ? 0 : startParams.X;
            startParams.Y = (startParams.Y < 0) ? 0 : startParams.Y;

            mStartSelectionHandle.LayoutParameters = startParams;

            MyAbsoluteLayout.LayoutParams endParams = (MyAbsoluteLayout.LayoutParams)mEndSelectionHandle.LayoutParameters;
            endParams.X = (int)mSelectionBounds.Right;
            endParams.Y = (int)mSelectionBounds.Bottom;

            // Stay on screen
            endParams.X = (endParams.X < 0) ? 0 : endParams.X;
            endParams.Y = (endParams.Y < 0) ? 0 : endParams.Y;

            mEndSelectionHandle.LayoutParameters = endParams;
        }