Я создаю файл PDF с помощью класса Android PdfDocument .Я надуваю макет из файла XML ( LinearLayout внутри ConstraintLayout ), который затем завершается во время выполнения путем добавления новых строк с внешними данными.
Проблема в том, что выходной pdf может быть очень длинным или коротким.Я хотел бы избежать указания высоты страницы, прежде чем раздувать макет.Тем не менее, я не могу найти решение для измерения высоты макета, прежде чем добавить его на страницу
Это фактический код:
PdfDocument document = new PdfDocument();
//set page width and height
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(227,992, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
//inflating the layout
View v = getLayoutInflater().inflate(R.layout.rapportino, null);
//add data to layout
//...
//measure the layout, draw it and finish page
int measureWidth = View.MeasureSpec.makeMeasureSpec(page.getCanvas().getWidth(), View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(page.getCanvas().getHeight(), View.MeasureSpec.EXACTLY);
v.measure(measureWidth, measuredHeight);
v.layout(0, 0, measureWidth, measuredHeight);
v.draw(page.getCanvas());
document.finishPage(page);
//write to file..
Есть ли способ создатьpdf в зависимости от высоты просмотра?
РЕДАКТИРОВАТЬ: это макет, который я раздуваю
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/rapportino_indirizzo_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="end"
android:textColor="#000000"
android:textSize="@dimen/rapportino_global_textsize" />
<!--
other textview, linearlayout and imageview
..
..
-->
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>