Пример #1
0
 /// <summary>
 /// <p>Applies the columns collapse status to a new row added to this
 /// table.
 /// </summary>
 /// <remarks>
 /// <p>Applies the columns collapse status to a new row added to this
 /// table. This method is invoked by PassThroughHierarchyChangeListener
 /// upon child insertion.</p>
 /// <p>This method only applies to
 /// <see cref="TableRow">TableRow</see>
 /// instances.</p>
 /// </remarks>
 /// <param name="child">the newly added child</param>
 private void trackCollapsedColumns(android.view.View child)
 {
     if (child is android.widget.TableRow)
     {
         android.widget.TableRow         row = (android.widget.TableRow)child;
         android.util.SparseBooleanArray collapsedColumns = mCollapsedColumns;
         int count = collapsedColumns.size();
         {
             for (int i = 0; i < count; i++)
             {
                 int  columnIndex = collapsedColumns.keyAt(i);
                 bool isCollapsed = collapsedColumns.valueAt(i);
                 // the collapse status is set only when the column should be
                 // collapsed; otherwise, this might affect the default
                 // visibility of the row's children
                 if (isCollapsed)
                 {
                     row.setColumnCollapsed(columnIndex, isCollapsed);
                 }
             }
         }
     }
 }
Пример #2
0
        private void mutateColumnsWidth(android.util.SparseBooleanArray columns, bool allColumns
                                        , int size, int totalWidth)
        {
            int skipped = 0;

            int[] maxWidths       = mMaxWidths;
            int   length          = maxWidths.Length;
            int   count           = allColumns ? length : columns.size();
            int   totalExtraSpace = size - totalWidth;
            int   extraSpace      = totalExtraSpace / count;
            // Column's widths are changed: force child table rows to re-measure.
            // (done by super.measureVertical after shrinkAndStretchColumns.)
            int nbChildren = getChildCount();

            {
                for (int i = 0; i < nbChildren; i++)
                {
                    android.view.View child = getChildAt(i);
                    if (child is android.widget.TableRow)
                    {
                        child.forceLayout();
                    }
                }
            }
            if (!allColumns)
            {
                {
                    for (int i_1 = 0; i_1 < count; i_1++)
                    {
                        int column = columns.keyAt(i_1);
                        if (columns.valueAt(i_1))
                        {
                            if (column < length)
                            {
                                maxWidths[column] += extraSpace;
                            }
                            else
                            {
                                skipped++;
                            }
                        }
                    }
                }
            }
            else
            {
                {
                    for (int i_1 = 0; i_1 < count; i_1++)
                    {
                        maxWidths[i_1] += extraSpace;
                    }
                }
                // we don't skip any column so we can return right away
                return;
            }
            if (skipped > 0 && skipped < count)
            {
                // reclaim any extra space we left to columns that don't exist
                extraSpace = skipped * extraSpace / (count - skipped);
                {
                    for (int i_1 = 0; i_1 < count; i_1++)
                    {
                        int column = columns.keyAt(i_1);
                        if (columns.valueAt(i_1) && column < length)
                        {
                            if (extraSpace > maxWidths[column])
                            {
                                maxWidths[column] = 0;
                            }
                            else
                            {
                                maxWidths[column] += extraSpace;
                            }
                        }
                    }
                }
            }
        }