# limitations under the License.
# Views and services to use the Android native user interface
-module ui
+module ui is
+ # `adjustPan` allows to use EditText in a ListLayout
+ android_manifest_activity """android:windowSoftInputMode="adjustPan""""
+end
# Implementation note:
#
native_activity.show_fragment(root_layout_id, window.native)
super
end
+
+ redef fun on_start do window.on_start
+
+ redef fun on_destroy do window.on_destroy
+end
+
+redef class CompositeControl
+ redef fun on_start do for i in items do i.on_start
+
+ redef fun on_destroy do for i in items do i.on_destroy
+end
+
+redef class Activity
+ redef fun on_back_pressed
+ do
+ var window = app.window
+ if window.enable_back_button then
+ window.on_back_button
+ return true
+ end
+
+ return false
+ end
end
# On Android, a window is implemented with the fragment `native`
redef class Android_widget_ArrayAdapter
private new (context: NativeContext, res: Int, sender: ListLayout)
import ListLayout.create_view in "Java" `{
- final int final_sender_object = sender;
+ final nit.app.NitObject final_sender_object = sender;
+ ListLayout_incr_ref(sender);
return new android.widget.ArrayAdapter(context, (int)res) {
@Override
else // if (align > 0.5d)
g = android.view.Gravity.RIGHT;
- view.setGravity(g);
+ view.setGravity(g | android.view.Gravity.CENTER_VERTICAL);
`}
end
private fun set_callback_on_toggle(view: NATIVE)
import on_toggle in "Java" `{
- final int final_sender_object = self;
+ final nit.app.NitObject final_sender_object = self;
CheckBox_incr_ref(final_sender_object);
view.setOnCheckedChangeListener(
redef class NativeButton
private new (context: NativeActivity, sender_object: Button)
import Button.on_click in "Java" `{
- final int final_sender_object = sender_object;
+ final nit.app.NitObject final_sender_object = sender_object;
Button_incr_ref(final_sender_object);
- return new android.widget.Button(context){
+ return new android.widget.Button(context) {
@Override
public boolean onTouchEvent(android.view.MotionEvent event) {
- if(event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
+ if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
Button_on_click(final_sender_object);
return true;
+ } else if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
+ return true;
}
return false;
}
redef class Android_app_Fragment
private new (nit_window: Window)
import Window.on_create_fragment in "Java" `{
- final int final_nit_window = nit_window;
+ final nit.app.NitObject final_nit_window = nit_window;
+ Window_incr_ref(nit_window);
return new android.app.Fragment(){
@Override
};
`}
end
+
+redef class Text
+ redef fun open_in_browser
+ do to_java_string.native_open_in_browser(app.native_activity)
+end
+
+redef class JavaString
+ private fun native_open_in_browser(context: NativeContext)
+ in "Java" `{
+ android.content.Intent intent = new android.content.Intent(
+ android.content.Intent.ACTION_VIEW,
+ android.net.Uri.parse(self));
+ context.startActivity(intent);
+ `}
+end