Ahmed Talbi
Ahmed Talbi

Reputation: 41

display an Android LinearLayout in a Codename One application

Can I create a LinearLayout (for example) with native android code and display it on a CN1 interface ?

I have a method that implements native android code to create this view. if the method returns an EditText or Button for example, all works fine. but if it returns a LinearLayout, nothing happens and I have no error message.

signature of the method that calls on the native code:

public interface NativeCall extends NativeInterface {
    
    public PeerComponent getMainView();
    
}

native implementation code that works well:

    public class NativeCallImpl {

        public android.view.View getMainView() {
    
            Button b0 = new Button(((Context) MyApplication.getContext()));                        
            return b0;
        }
    
        public boolean isSupported() {
            return true;
        }

}

native code implementation which does not work:

public class NativeCallImpl {
       
    public android.view.View getMainView() {

        Button b0 = new Button(((Context) MyApplication.getContext()));
        Button b1 = new Button(((Context) MyApplication.getContext()));

        b0.setText("b0");
        b1.setText("b1");

        LinearLayout linearLayout = new LinearLayout(((Context) MyApplication.getContext()));
        linearLayout.setOrientation(LinearLayout.VERTICAL);

        linearLayout.addView(b0);
        linearLayout.addView(b1);

        return linearLayout;
    }

    public boolean isSupported() {
        return true;
    }

}

Upvotes: 3

Views: 46

Answers (1)

Shai Almog
Shai Almog

Reputation: 52760

Yes. Linear layout should work. Try adding the UI into the center of a form with a border layout. This will neutralize the impact of scrolling/preferred size calculations etc.

Android layout calculation is a bit over complicated so their size measuring code doesn't work well for layouts in the first try. For a button it will work well, but for a layout... Not so much.

Upvotes: 2

Related Questions