নিজস্ব সংজ্ঞায়িত লেআউট, অন ড্র () পদ্ধতি কল হচ্ছে না


90

আমি এর মতো একটি ক্লাস সংজ্ঞায়িত করেছি :

public class TestMyFrameLayout extends FrameLayout{

    Paint mPaint;
    public TestMyFrameLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public TestMyFrameLayout(Context context) {
        super(context);
        mPaint = new Paint();
        mPaint.setColor(Color.GREEN);
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(50f, 50f, 30, mPaint);
    }   
}

এবং এটি বলে:

TestMyFrameLayout myFrameLayout = new TestMyFrameLayout(this);
LayoutParams myFrameLayoutParams = new LayoutParams(300,300);
myFrameLayout.setLayoutParams(myFrameLayoutParams);
setContentView(myFrameLayout);

কিন্তু আসলে টেস্টমিয়ারফ্রেমলআউটআউটডন (ক্যানভাস ক্যানভাস) ফাংশন কল হচ্ছে না, কেন?


আপনি যে কোডটি ব্যবহার করছেন সেখানে আপনি কি তা প্রদর্শন করতে পারেন? এছাড়াও যোগ @OverrideonDraw আগে: এই অন্ধকার মধ্যে টাইপো জন্য চেক করবে।
— লরেন্ট '

4
ধন্যবাদ লরেন্ট '। আমার সমস্যা ইতিমধ্যে সমাধান করা হয়েছে। This.setWillNotDraw যোগ করুন (মিথ্যা);
— old_hou

উত্তর:


213

সমাধান হয়েছে। যোগ this.setWillNotDraw(false); কন্সট্রাকটর মধ্যে


24
এটি কেবলমাত্র অ্যাংস্ট রাইড ডেভেলপারই হতে পারে যিনি এটিকে ডিফল্টরূপে সত্য করে দিয়েছিলেন!
— নার্কেস ক্যালভেট

4
কেন এই সাহায্য করবে?
— রায়ানশাও

4
ভিউগ্রুপগুলির জন্য @ রায়ানশাও এটি ডিফল্টরূপে সত্য হয়ে গেছে।
— আতাউলম

4
কেউ কেন এটা সত্য হতে চাইবে? কেন ??
— কাই ওয়াং

আমার ধারণা, যখন ভিউগ্রুপটি এমন খাঁটি পাত্রে যখন নিজের জন্য আঁকানোর কিছুই না থাকে
— এইচএমএইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.