ユーザーがアクティビティ内で共有ボタンを選択すると、レイアウトを膨らませてデータを入力し、新しい印刷 API を使用してそのレイアウトを PDF に書き込みます。
私のフラグメントでは、
@TargetApi(Build.VERSION_CODES.KITKAT)
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_share_context:
LayoutInflator inflator = getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View container = inflator.inflate(R.layout.person_share, null, false);
TextView name = (TextView)topContainer.findViewById(R.id.person_name);
name.setText("Test Name");
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(612, 792, 1).create()
PdfDocument.Page page = document.startPage(pageInfo)
container.draw(page.getCanvas());
document.finishPage(page)
// write pdf
...
残念ながら、これは空のpdfドキュメントを出力します。ただし、画面に既に存在するビュー (onCreateView(..) で膨張) を使用すると、期待どおりに pdf に表示されます。
助けていただければ幸いです。