/// <summary> /// Make a layout for the transformed text (password transformation /// being the primary example of a transformation) /// that will be updated as the base text is changed. /// </summary> /// <remarks> /// Make a layout for the transformed text (password transformation /// being the primary example of a transformation) /// that will be updated as the base text is changed. /// If ellipsize is non-null, the Layout will ellipsize the text /// down to ellipsizedWidth. /// * /// *@hide /// </remarks> public DynamicLayout(java.lang.CharSequence @base, java.lang.CharSequence display , android.text.TextPaint paint, int width, android.text.Layout.Alignment?align, android.text.TextDirectionHeuristic textDir, float spacingmult, float spacingadd , bool includepad, android.text.TextUtils.TruncateAt?ellipsize_1, int ellipsizedWidth ) : base((ellipsize_1 == null) ? display : (display is android.text.Spanned) ? new android.text.Layout.SpannedEllipsizer(display) : new android.text.Layout.Ellipsizer (display), paint, width, align, textDir, spacingmult, spacingadd) { mBase = @base; mDisplay = display; if (ellipsize_1 != null) { mInts = new android.text.PackedIntVector(COLUMNS_ELLIPSIZE); mEllipsizedWidth = ellipsizedWidth; mEllipsizeAt = ellipsize_1; } else { mInts = new android.text.PackedIntVector(COLUMNS_NORMAL); mEllipsizedWidth = width; mEllipsizeAt = null; } mObjects = new android.text.PackedObjectVector <android.text.Layout.Directions>(1); mIncludePad = includepad; if (ellipsize_1 != null) { android.text.Layout.Ellipsizer e = (android.text.Layout.Ellipsizer)getText(); e.mLayout = this; e.mWidth = ellipsizedWidth; e.mMethod = ellipsize_1; mEllipsize = true; } // Initial state is a single line with 0 characters (0 to 0), // with top at 0 and bottom at whatever is natural, and // undefined ellipsis. int[] start; if (ellipsize_1 != null) { start = new int[COLUMNS_ELLIPSIZE]; start[ELLIPSIS_START] = ELLIPSIS_UNDEFINED; } else { start = new int[COLUMNS_NORMAL]; } android.text.Layout.Directions[] dirs = new android.text.Layout.Directions[] { DIRS_ALL_LEFT_TO_RIGHT }; android.graphics.Paint.FontMetricsInt fm = paint.getFontMetricsInt(); int asc = fm.ascent; int desc = fm.descent; start[DIR] = DIR_LEFT_TO_RIGHT << DIR_SHIFT; start[TOP] = 0; start[DESCENT] = desc; mInts.insertAt(0, start); start[TOP] = desc - asc; mInts.insertAt(1, start); mObjects.insertAt(0, dirs); // Update from 0 characters to whatever the real text is reflow(@base, 0, 0, @base.Length); if (@base is android.text.Spannable) { if (mWatcher == null) { mWatcher = new android.text.DynamicLayout.ChangeWatcher(this); } // Strip out any watchers for other DynamicLayouts. android.text.Spannable sp = (android.text.Spannable)@base; android.text.DynamicLayout.ChangeWatcher[] spans = sp.getSpans <android.text.DynamicLayout .ChangeWatcher>(0, sp.Length); { for (int i = 0; i < spans.Length; i++) { sp.removeSpan(spans[i]); } } sp.setSpan(mWatcher, 0, @base.Length, android.text.SpannedClass.SPAN_INCLUSIVE_INCLUSIVE | (PRIORITY << android.text.SpannedClass.SPAN_PRIORITY_SHIFT)); } }
/// <summary> /// Make a layout for the transformed text (password transformation /// being the primary example of a transformation) /// that will be updated as the base text is changed. /// </summary> /// <remarks> /// Make a layout for the transformed text (password transformation /// being the primary example of a transformation) /// that will be updated as the base text is changed. /// If ellipsize is non-null, the Layout will ellipsize the text /// down to ellipsizedWidth. /// * /// *@hide /// </remarks> public DynamicLayout(java.lang.CharSequence @base, java.lang.CharSequence display , android.text.TextPaint paint, int width, android.text.Layout.Alignment? align, android.text.TextDirectionHeuristic textDir, float spacingmult, float spacingadd , bool includepad, android.text.TextUtils.TruncateAt? ellipsize_1, int ellipsizedWidth ) : base((ellipsize_1 == null) ? display : (display is android.text.Spanned) ? new android.text.Layout.SpannedEllipsizer(display) : new android.text.Layout.Ellipsizer (display), paint, width, align, textDir, spacingmult, spacingadd) { mBase = @base; mDisplay = display; if (ellipsize_1 != null) { mInts = new android.text.PackedIntVector(COLUMNS_ELLIPSIZE); mEllipsizedWidth = ellipsizedWidth; mEllipsizeAt = ellipsize_1; } else { mInts = new android.text.PackedIntVector(COLUMNS_NORMAL); mEllipsizedWidth = width; mEllipsizeAt = null; } mObjects = new android.text.PackedObjectVector<android.text.Layout.Directions>(1); mIncludePad = includepad; if (ellipsize_1 != null) { android.text.Layout.Ellipsizer e = (android.text.Layout.Ellipsizer)getText(); e.mLayout = this; e.mWidth = ellipsizedWidth; e.mMethod = ellipsize_1; mEllipsize = true; } // Initial state is a single line with 0 characters (0 to 0), // with top at 0 and bottom at whatever is natural, and // undefined ellipsis. int[] start; if (ellipsize_1 != null) { start = new int[COLUMNS_ELLIPSIZE]; start[ELLIPSIS_START] = ELLIPSIS_UNDEFINED; } else { start = new int[COLUMNS_NORMAL]; } android.text.Layout.Directions[] dirs = new android.text.Layout.Directions[] { DIRS_ALL_LEFT_TO_RIGHT }; android.graphics.Paint.FontMetricsInt fm = paint.getFontMetricsInt(); int asc = fm.ascent; int desc = fm.descent; start[DIR] = DIR_LEFT_TO_RIGHT << DIR_SHIFT; start[TOP] = 0; start[DESCENT] = desc; mInts.insertAt(0, start); start[TOP] = desc - asc; mInts.insertAt(1, start); mObjects.insertAt(0, dirs); // Update from 0 characters to whatever the real text is reflow(@base, 0, 0, @base.Length); if (@base is android.text.Spannable) { if (mWatcher == null) { mWatcher = new android.text.DynamicLayout.ChangeWatcher(this); } // Strip out any watchers for other DynamicLayouts. android.text.Spannable sp = (android.text.Spannable)@base; android.text.DynamicLayout.ChangeWatcher[] spans = sp.getSpans<android.text.DynamicLayout .ChangeWatcher>(0, sp.Length); { for (int i = 0; i < spans.Length; i++) { sp.removeSpan(spans[i]); } } sp.setSpan(mWatcher, 0, @base.Length, android.text.SpannedClass.SPAN_INCLUSIVE_INCLUSIVE | (PRIORITY << android.text.SpannedClass.SPAN_PRIORITY_SHIFT)); } }