Creating custom view

前端 未结 2 1537
失恋的感觉
失恋的感觉 2021-02-10 20:41

I want to create a custom view TestView class for which I can create object via new TestView(). A new view class however needs a AttributeSet object. F

相关标签:
2条回答
  • 2021-02-10 20:55

    Either of 3 constructor provided by view class can be implemented.. so providing constructor with attributeset is not mandatory.

    0 讨论(0)
  • 2021-02-10 21:18

    It's not mandatory, and most times you don't even have to worry about it as long as you provide constructors from View that pass them along to super().

    public CustomView(Context context)  // No Attributes in this one.
    {
      super(context);
      // Your code here
    }
    
    public CustomView(Context context, AttributeSet attrs)
    {
      super(context, attrs);
      // Your code here
    }
    
    public CustomView(Context context, AttributeSet attrs, int default_style)
    {
      super(context, attrs, default_style);
      // Your code here
    }
    

    View takes care of doing the heavy lifting for dealing with all of the android:* attributes that you'd usually pass in when adding the view to a layout. Your constructors could make use of those attributes or your own if you've defined them:

    <com.blrfl.CustomView
     android:id="@+id/customid"
     android:layout_weight="1"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:layout_gravity="center"
     blrfl:foo="bar"
     blrfl:quux="bletch"
    />
    
    0 讨论(0)
提交回复
热议问题