0

特定の幅のキャンバスに 3 つの異なるユーザー入力を描画したい Android プロジェクトで作業しています。3 つの入力には、カスタマイズ可能なレイアウト/異なる印刷が必要です。タイトル、コンテンツ、連絡先データのテキスト レイアウトが異なる新聞のテキスト広告のようなものを考えてみてください。これまでのところ、このソリューションを使用して、改行などに関する入力をフォーマットしています。

現在、次のようになっています。
TextView tv_title = new TextView(this);
tv_title.setText(titleText);
tv_title.setDrawingCacheEnabled(true);
tv_title.setWidth(advert_width);
advert_height = tv_title.getMinimumHeight();

Canvas canvas = new Canvas();
Bitmap b =Bitmap.createBitmap(advert_width,advert_height, Bitmap.Config.ARGB_8888);
canvas.setBitmap(b);
Paint backgroundPaint = new Paint();
backgroundPaint.setColor(Color.WHITE);
canvas.drawPaint(backgroundPaint);

これにより、ビットマップのサイズが TextView の必要な高さに正確に変更され、各「Text-Bitmap」の高さを保存して別のキャンバスに描画できるようになりました。
残念ながら、 TextView.getMinHeight() と View.getMinimumHeight() は両方とも例外をスローします。最初にセッターを使用した場合にのみ機能すると思います。

複数行の Textview の高さを取得する別の解決策を考えられる人はいますか?

よろしく、
クリス

4

1 に答える 1

0

ここにある私の回答を参照して、特定のニーズを拡大することをお勧めします。 https://stackoverflow.com/a/15092729/1759409

たとえば、これら 3 つのメソッドは、設定されたサイズの四角形をテキストで埋めることから始まります。四角形の初期サイズは、下の 2 つのメソッドを呼び出してテキストに合わせて寸法を作成することで計算できます。ここにコメントすると、さらに拡張できます。

于 2013-02-27T09:48:23.107 に答える