Ale*_*Key 6 java android canvas href hyperlink
再会。我正在使用本机 PrintedPdfDocument 类构建一个简单的 pdf 报告,我需要将带有超链接的文本插入到文档中。这是我对pdf页面的简单实现。
PrintedPdfDocument document = new PrintedPdfDocument(context, attributes);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(595, 842, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
Canvas c = page.getCanvas();
TextPaint p = new TextPaint();
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的几种方法,但仍然没有运气。
使用 Canvas drawText() 方法的第一种方法。结果:没有超链接的“一些链接”。
c.drawText("<a href='https://example.com'>some link</a>", 30, 30, p);
Run Code Online (Sandbox Code Playgroud)
第二种方式使用 SpannableString。结果:“一些链接”。
String link = "https://example.com";
SpannableString s = new SpannableString("some link");
s.setSpan(new URLSpan(link), 0, link.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
c.drawText(s.toString(), 30, 30, p);
Run Code Online (Sandbox Code Playgroud)
使用 StaticLayout 的第三种方式。结果:空白。
Spanned spanned = Html.fromHtml("<a href='https://example.com'>some link</a>", null, null);
StaticLayout l = new StaticLayout(spanned, p, 30, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
l.draw(c);
Run Code Online (Sandbox Code Playgroud)
TextView 不向 Canvas 绘制任何内容。
TextView tv = new TextView(context);
tv.setLayoutParams(new ViewGroup.LayoutParams(100, 100));
tv.setText(Html.fromHtml("<a href='https://example.com'>some link</a>"));
tv.draw(c);
Run Code Online (Sandbox Code Playgroud)
也许你最好知道如何处理它?
| 归档时间: |
|
| 查看次数: |
531 次 |
| 最近记录: |