ビューの合計の高さを取得する方法

PHPz
リリース: 2024-02-06 08:35:07
転載
657 人が閲覧しました
質問内容

PDFを生成するためにビューの合計の高さを取得し、何ページ描画する必要があるかを知る必要があります。

データベースからのデータを含む ScrollView を含む画面コンテンツを使用して PDF を生成する必要があります。

これのためにテスト プロジェクトを作成しました。以下のコードを参照してください。

XML を変更して画像を追加しても、このコードでは常に同じ番号が返されます。

リーリー

これは PDF を生成するコードです:

リーリー

これは私の XML ファイルです:

リーリー ###@編集: 私が試したことへのリンクは次のとおりです。 Android: ScrollView の合計の高さ

レイアウトがいつ描画されたかを知るにはどうすればよいですか?

@Edit2: これは PDF を作成するためのチュートリアルです (生成されるのは 1 ページのみなので、より多くのページを生成するコードは私が見つけたものです) https://www.youtube.com/watch?v=-JC1PI-dSeEE


正解


コードは、常に指示したのと同じ番号を返します。必要な数値を与え、その数値を指定したサイズに固定します。

ドキュメントに従って Measurespec を EXACTLY に設定する場合

つまり、画面サイズに基づいて計算された間違ったサイズにビュー サイズを強制していることになります。

PDF ビューを描画するときは、PDF ページを画面に合った興味深いサイズに設定することも、A4 などの標準の用紙サイズに設定することもできます

標準以外の幅を選択した場合は、標準以外の高さを使用して 1 ページのみにすることもできます。その後、ユーザーがそれを印刷したい場合は、複数の幅と高さのページに分割する必要があります。ユーザーの観点から見ると、画面上で PDF を表示するだけの場合、複数のページを使用するメリットはありません。

PDF の標準ページ サイズを維持し、デバイスの物理的な画面サイズとは関係なく、PDF を別の低解像度画面として扱う方がよいと思います (ページを上下にスクロールできます)。左右) ###

単一のビューを測定する場合、ビュー全体とそのすべてのサブビューを測定することになり、スライス (2 ページ目と 3 ページ目で確認したいもの) を測定することはできません。

ビューから複数ページの PDF を作成するには、主に 2 つの方法があります。

    すべてを描画してから、複数のページにまたがってスライスします。このアプローチを使用すると、テキストの特定の行の上半分を 1 つのページに配置し、下半分を別のページに配置するなど、項目がページ間で分割される可能性があります。読めなくなります。これは良いアプローチではありません。
  1. 親ビューのサブビューを繰り返し、各サブビューを測定し、単一ページのレイアウトに追加します。この方法で、各サブビューのサイズを取得し、追加したすべてのビューの累積サイズを計算して、ページ サイズに対して大きすぎるかどうかを確認できます。サイズが大きすぎる場合は、PDF ページを閉じて、新しいページへのレイアウトを開始します。これは、アイテムがページ間で分割されないことを意味します (これははるかに優れています)。
https://www.php.cn/link/ea89621bee7c88b2c5be6681c8ef4906

は、個々のサブビュー (この場合、スクロール可能な画面) を測定することによって、スクロール可能な画面から複数ページの PDF を生成する方法の完全な例です。 screen はリサイクル ビューですが、同様の方法でスクロール ビューの子を反復処理できます)。 A4 ページの解像度は非常に低いため、物理画面の通常のフォント サイズ (またはその他の項目サイズ) は大きすぎる可能性があることに注意してください。そのため、通常、別のページで行うのと同じように、これらのページのレイアウトのサイズも変更する必要があります。画面サイズ)。低解像度の PDF ページのサイズを変更し、PDF ページ サイズの倍数で描画し、PDF キャンバスでスケールを設定して正しいサイズに戻す別の方法もあります。たとえば、2 倍のレイアウトに描画します。次に、PDF ページに描画するときにすべてを半分のサイズに戻します。

発生する可能性のある問題は、テキストビューのブロック内に 1 ページに収まるよりも多くのテキストが含まれる可能性があることですが、その場合は 1 つではなく 2 つのテキストビューを作成するための追加の処理が必要になります。

以上がビューの合計の高さを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート