以编程方式组合视图-Android

时间:2018-09-04 10:33:57

标签: android view

我有一个需要在PDF上显示的布局列表。但是,我想找到一种方法可以将这些视图合并为一个视图。

for(LinearLayout cardView : selectedCardIDList){
            pageNo++;
            cardView.measure(measuredWidth, 0);
            cardView.layout(0, 0, pageWidth, cardView.getHeight());
            cardView.draw(canvas);
        }

这是我用来绘制每个视图的方法。我想合并这些视图,然后绘制新视图。

View Example

这是一个简短的示例,我用“ V”作为视图来绘制。

在左侧,我有View 1和View 2,我想尝试将它们堆叠在一个全新的视图(如View 3)中。希望这会有所帮助

这是我的问题的一个例子。 Here is an example of my problem.

private void generatePDF(){
            PrintAttributes printAttributes = new PrintAttributes.Builder()
                    .setColorMode(PrintAttributes.COLOR_MODE_COLOR)
                    .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
                    .setMinMargins(PrintAttributes.Margins.NO_MARGINS)
                    .setResolution(new PrintAttributes.Resolution("Res_Test", PRINT_SERVICE, 450, 700))
                    .build();

            PdfDocument document = new PrintedPdfDocument(getActivity(), printAttributes);

            PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595,842,1).create();

            PdfDocument.Page page = document.startPage(pageInfo);

            for(LinearLayout cardView : selectedCardIDList){
        ((ViewGroup)cardView.getParent()).removeView(cardView);
        combiPDfView.addView(cardView);
    }
    combiPDfView.draw(canvas);

            document.finishPage(page);
    }

这是我用来生成PDF的方法。

<LinearLayout
            android:id="@+id/pdfView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:visibility="invisible"/>

这是我添加视图并显示在PDF上的布局。 combiPDfView是LinearLayout的名称。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法实现此目的:

采用垂直方向的父级Linearlayout

LinearLayout parentView= findViewById(R.id.parentView); 

添加视图的代码

for(LinearLayout cardView : selectedCardIDList){
            // View to be added
            pageNo++;
            cardView.measure(measuredWidth, 0);
            cardView.layout(0, 0, pageWidth, cardView.getHeight());
            cardView.draw(canvas);
            //add view to parent view
            parentView.addView(cardView);
        }