Using custom classes

Erel

B4X founder
Staff member
Licensed User
Longtime User
In many cases you will need to extend (subclass) an existing view.
The NativeClass property allows you to override the default type with a custom one. This property doesn't have any effect during design. Only when the layout is loaded.

For example if we want to create a specialized EditText that shows a toast message when the selection area is changed we can create the following class:
B4X:
   public static class MyEditText extends EditText {
       public MyEditText(Context context) {
         super(context);
      }
      protected void onSelectionChanged(int selStart, int selEnd) {
         if (selEnd - selStart > 0)
            Toast.makeText(getContext(), getText().subSequence(selStart, selEnd), Toast.LENGTH_SHORT).show();
       }
   }
Assuming that this class is declared inside an activity named Test1Activity we should set the NativeClass property to:
SS-2012-04-19_16.52.24.png


Note that if the property starts with a dot then the application package is automatically added.

The layout builder expects a constructor with a single argument which is the context.

Tips:
- Label is based on TextView. You can use label with any class that extends TextView.
- Panel (without any children) supports all classes that extend View.
 

Amalkotey

Active Member
Licensed User
Longtime User
Is it a future in the next B4A version? In B4A 1.90, I cannot find NativeClass.
 

barx

Well-Known Member
Licensed User
Longtime User
This is for Designer4Android. It is a separate product to Basic4Android
 
Top