私は、RelativeLayoutとImageViewを持つフラグメントを持っています。 Androidフラグメントの空白
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pagelayout"
android:layout_below="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/aqua_blue"
tools:context="MainActivityFragment">
<ImageView
android:id="@+id/pdfImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:adjustViewBounds="true"
android:scaleType="fitStart"/>
私は次のようにonViewCreatedの画像ビューの画像と表示としてpdfpageをレンダリングします。
pageLayout = (RelativeLayout) rootView.findViewById(R.id.pagelayout);
//Retain view references.
mImageView = (ImageView) rootView.findViewById(R.id.pdfImage);
// Show the first page by default.
mCurrentPageNum = pdfRenderer.getmCurrentPageNum();
if (mCurrentPageNum == 0) {
mCurrentPageNum = 1;
pdfRenderer.setmCurrentPageNum(mCurrentPageNum);
}
showPage(mCurrentPageNum, true, this.activity);
//get screen size
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
scrwidth = metrics.widthPixels;
scrheight = pdfRenderer.getPDFImage().getHeight();
pageControlsList = pdfRenderer.GetPageControls();
if (pageControlsList != null) {
if (pageControlsList.size() > 0) {
generateControls();
showPage(mCurrentPageNum, true, this.activity);
}
}
場合はページ上のユーザーのスワイプ、私は、次のページまたは前のページに移動します。そのために、私はMainactivityの断片で書かれた次の関数を呼び出すことになります。
public void Readpage(int index, boolean PdfReload, Activity activity)
{
//context=activity;
//pageLayout = (RelativeLayout) rootView.findViewById(R.id.pagelayout);
//mImageView = (ImageView) rootView.findViewById(R.id.pdfImage);
showPage(index, true, activity);
pageControlsList = pdfRenderer.GetPageControls();
if (pageControlsList != null) {
generateControls();
}
}
Generatecontrolsメソッドは、ページにコントロールがあり、動的に生成された場合に呼び出されます。コードは次のとおりです(サンプルのコントロールは1つだけです)。
public void generateControls() {
//iterate loop to create each control
for (Map.Entry<Integer, PageElement> ctrl : pageControlsList.entrySet()) {
Integer ctrlKey = ctrl.getKey();
PageElement pageField = ctrl.getValue();
String name = pageField.getName();
int type = pageField.getType();
int pdfw = (int) pdfRenderer.getPage_width();
int pdfh = (int) pdfRenderer.getPage_height();
//get dimensions of the control
int left = (int) pageField.getLeft();
int top = (int) pageField.getTop();
int right = (int) pageField.getRight();
int bottom = (int) pageField.getBottom();
int width = (int) pageField.getWidth();
int height = (int) pageField.getHeight();
//calculate dimensions w.r.t. screen size
int ctrlW = scrwidth * width/pdfw;
int ctrlH = scrheight * height/pdfh;
int ctrlLeft = (int) (scrwidth * left)/pdfw;
int ctrlTop = (int) (((scrheight * (pdfh - top))/pdfh));
int ctrlRight = (int) (scrwidth * right)/pdfw;
int ctrlBottom = (int) (scrheight * bottom/pdfh);
//set dimensions of the control with layout parameters
RelativeLayout.LayoutParams ctrllp = new RelativeLayout.LayoutParams(ctrlW, ctrlH);
ctrllp.setMargins(ctrlLeft, ctrlTop, 0, 0);
//generate controls based on the type of control
if (type == 2) { //checkbox
CheckBox myChkBox = new CheckBox(context);
myChkBox.setId(ctrlKey);
myChkBox.setFocusable(false);
myChkBox.setEnabled(false);
if (pageField.ExportValue().contains("Off"))
myChkBox.setChecked(false);
else
myChkBox.setChecked(true);
pageLayout.setLayoutParams(ctrllp);
pageLayout.addView(myChkBox, ctrllp);
}
最初のページにコントロールが含まれていても正しく動作します。他のページにコントロールが含まれているとスワイプすると、空白のフラグメントしか見ることができません。コントロールがなければ、私は完璧に動作しているすべてを見ることができます。私は多くの方法を試みたが、私のために働いた人はいなかった助けてください。