小编Ale*_*Key的帖子

如何将超链接添加到 PdfDocument 页面画布?

再会。我正在使用本机 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, …
Run Code Online (Sandbox Code Playgroud)

java android canvas href hyperlink

6
推荐指数
0
解决办法
531
查看次数

更改一个 ViewHolder 项目也会影响其他项目

我有一个基于RecyclerView的简单 mp3 播放器。有一个AdapterViewHolder用于处理播放列表中的曲目。

public class TracksAdapter extends RecyclerView.Adapter<TracksAdapter.ViewHolder> {

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.cell_playlist, parent, false);

        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        holder.trackName.setText("Track " + position);
    }

    @Override
    public int getItemCount() {

        return tracks.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder {

        final TextView trackName;

        ViewHolder(View itemView) {

            super(itemView);

            trackName = itemView.findViewById(R.id.trackName);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我单击曲目时,我想更改播放列表中所选曲目的背景颜色。问题是当我为一个项目设置背景颜色时,它会影响播放列表中的每十个单元格。

例如,如果播放列表中有 100 首曲目,则将突出显示 …

java android android-arrayadapter android-recyclerview

4
推荐指数
1
解决办法
2511
查看次数