如何刷新布局中的自定义视图

发布于 2024-11-27 23:19:35 字数 2568 浏览 1 评论 0原文

我刚刚创建了一个用于显示 PDF 文件的视图

    public class PDFGraphic extends View{
     String mText;
     float mLastX;
     float mLastY;
    public float mOffX;
    public float mOffY;
    Canvas mCan;
    Bitmap mBi;

    public PDFGraphic(Context context, AttributeSet attrs){ 
        super(context,attrs);
        setPageBitmap();
        setBackgroundColor(Color.TRANSPARENT);
    }
    public void uiInvalidate() {
        postInvalidate();
    }
    public void setPageBitmap() {
        mBi = Bitmap.createBitmap(100, 100, Config.RGB_565);
        mCan = new Canvas(mBi);
        mCan.drawColor(Color.RED);
        }
   public void onDraw(Canvas canvas) {
        Paint paint = new Paint();
             canvas.drawBitmap(mBi, 0, 0, paint);
        }
}

,这是我的 xml 文件(pdfview):

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" android:orientation="vertical">
    <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="match_parent" android:gravity="bottom|center" android:layout_height="wrap_content" android:minHeight="30px" android:visibility="visible">
        <com.shawnprojectPDF.PDFGraphic android:id="@+id/pdfview1" android:layout_width="match_parent" android:layout_above="@+id/editText1" android:layout_alignParentTop="true" android:layout_height="match_parent"></com.shawnprojectPDF.PDFGraphic>
        <ImageButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/leftarray" android:id="@+id/left" android:layout_alignParentBottom="true" android:layout_marginLeft="68px"></ImageButton>
        <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/left" android:layout_alignParentBottom="true" android:gravity="center" android:width="100px" android:singleLine="true" android:maxLength="12"></EditText>
        <ImageButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:src="@drawable/rightarray" android:layout_toRightOf="@+id/editText1" android:layout_alignParentBottom="true"></ImageButton>
    </RelativeLayout>
</LinearLayout>

在我的主要活动中,如果 setContentView(R.Layout.pdfview),则视图(PDFGraphic)不会失效,如果 setContentView(New PDFGraphic( this)),成功失效。 如何刷新整个布局中的视图。

I just created a view for displaying PDF file

    public class PDFGraphic extends View{
     String mText;
     float mLastX;
     float mLastY;
    public float mOffX;
    public float mOffY;
    Canvas mCan;
    Bitmap mBi;

    public PDFGraphic(Context context, AttributeSet attrs){ 
        super(context,attrs);
        setPageBitmap();
        setBackgroundColor(Color.TRANSPARENT);
    }
    public void uiInvalidate() {
        postInvalidate();
    }
    public void setPageBitmap() {
        mBi = Bitmap.createBitmap(100, 100, Config.RGB_565);
        mCan = new Canvas(mBi);
        mCan.drawColor(Color.RED);
        }
   public void onDraw(Canvas canvas) {
        Paint paint = new Paint();
             canvas.drawBitmap(mBi, 0, 0, paint);
        }
}

And this is my xml file(pdfview):

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" android:orientation="vertical">
    <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="match_parent" android:gravity="bottom|center" android:layout_height="wrap_content" android:minHeight="30px" android:visibility="visible">
        <com.shawnprojectPDF.PDFGraphic android:id="@+id/pdfview1" android:layout_width="match_parent" android:layout_above="@+id/editText1" android:layout_alignParentTop="true" android:layout_height="match_parent"></com.shawnprojectPDF.PDFGraphic>
        <ImageButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/leftarray" android:id="@+id/left" android:layout_alignParentBottom="true" android:layout_marginLeft="68px"></ImageButton>
        <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/left" android:layout_alignParentBottom="true" android:gravity="center" android:width="100px" android:singleLine="true" android:maxLength="12"></EditText>
        <ImageButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:src="@drawable/rightarray" android:layout_toRightOf="@+id/editText1" android:layout_alignParentBottom="true"></ImageButton>
    </RelativeLayout>
</LinearLayout>

In my main activity,if setContentView(R.Layout.pdfview), the view(PDFGraphic) will not be invalidated, if setContentView(New PDFGraphic(this)),it invalidates successfully.
How to refresh the view in the whole layout.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痞味浪人 2024-12-04 23:19:35

我没有看到问题所在。这些是我用你的代码得到的结果(下次,你做这部分)。使用 setContentView(R.layout.pdfview),结果如下:

setContentView(R.layout. pdfview)

使用 setContentView(new PDFGraphic(this, null) -- 请注意,我使用了两个参数的构造函数,因为您没有定义 PDFGraphic(Context) -- 这是结果:

<图像src="https://i.sstatic.net/H8Qwg.png" alt="new PDFGraphic()">

无论哪种情况,您的 onDraw() 都会正确发生。

I don't see the problem. These are the results that I get with your code (next time, you do this part). With setContentView(R.layout.pdfview), this is the result:

setContentView(R.layout.pdfview)

With setContentView(new PDFGraphic(this, null) -- note that I used the two-arg constructor because you didn't define PDFGraphic(Context) -- this is the result:

new PDFGraphic()

In either case, your onDraw() is happening correctly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文