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


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.