From 2d6694d695ed3f5d5a82e5d59af3f2f6fd6dffe6 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Thu, 15 Feb 2024 21:08:13 +0100 Subject: [PATCH] implement CompoundButton using GtkSwitch --- meson.build | 1 + .../android_widget_CompoundButton.h | 237 ++++++++++++++++++ .../widgets/android_widget_CompoundButton.c | 46 ++++ src/api-impl/android/graphics/Canvas.java | 2 + src/api-impl/android/widget/Button.java | 2 +- src/api-impl/android/widget/Checkable.java | 2 + .../android/widget/CompoundButton.java | 27 +- src/api-impl/android/widget/Switch.java | 2 - 8 files changed, 306 insertions(+), 13 deletions(-) create mode 100644 src/api-impl-jni/generated_headers/android_widget_CompoundButton.h create mode 100644 src/api-impl-jni/widgets/android_widget_CompoundButton.c diff --git a/meson.build b/meson.build index 67c05f4e..19e5a270 100644 --- a/meson.build +++ b/meson.build @@ -93,6 +93,7 @@ libtranslationlayer_so = shared_library('translation_layer_main', [ 'src/api-impl-jni/audio/android_media_SoundPool.c', 'src/api-impl-jni/widgets/android_widget_AbsListView.c', 'src/api-impl-jni/widgets/android_widget_Button.c', + 'src/api-impl-jni/widgets/android_widget_CompoundButton.c', 'src/api-impl-jni/widgets/android_widget_EditText.c', 'src/api-impl-jni/widgets/android_widget_ImageButton.c', 'src/api-impl-jni/widgets/android_widget_ScrollView.c', diff --git a/src/api-impl-jni/generated_headers/android_widget_CompoundButton.h b/src/api-impl-jni/generated_headers/android_widget_CompoundButton.h new file mode 100644 index 00000000..b7078cd3 --- /dev/null +++ b/src/api-impl-jni/generated_headers/android_widget_CompoundButton.h @@ -0,0 +1,237 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class android_widget_CompoundButton */ + +#ifndef _Included_android_widget_CompoundButton +#define _Included_android_widget_CompoundButton +#ifdef __cplusplus +extern "C" { +#endif +#undef android_widget_CompoundButton_NO_ID +#define android_widget_CompoundButton_NO_ID -1L +#undef android_widget_CompoundButton_NOT_FOCUSABLE +#define android_widget_CompoundButton_NOT_FOCUSABLE 0L +#undef android_widget_CompoundButton_FOCUSABLE +#define android_widget_CompoundButton_FOCUSABLE 1L +#undef android_widget_CompoundButton_FOCUSABLE_MASK +#define android_widget_CompoundButton_FOCUSABLE_MASK 1L +#undef android_widget_CompoundButton_FITS_SYSTEM_WINDOWS +#define android_widget_CompoundButton_FITS_SYSTEM_WINDOWS 2L +#undef android_widget_CompoundButton_VISIBLE +#define android_widget_CompoundButton_VISIBLE 0L +#undef android_widget_CompoundButton_INVISIBLE +#define android_widget_CompoundButton_INVISIBLE 4L +#undef android_widget_CompoundButton_GONE +#define android_widget_CompoundButton_GONE 8L +#undef android_widget_CompoundButton_VISIBILITY_MASK +#define android_widget_CompoundButton_VISIBILITY_MASK 12L +#undef android_widget_CompoundButton_ENABLED +#define android_widget_CompoundButton_ENABLED 0L +#undef android_widget_CompoundButton_DISABLED +#define android_widget_CompoundButton_DISABLED 32L +#undef android_widget_CompoundButton_ENABLED_MASK +#define android_widget_CompoundButton_ENABLED_MASK 32L +#undef android_widget_CompoundButton_WILL_NOT_DRAW +#define android_widget_CompoundButton_WILL_NOT_DRAW 128L +#undef android_widget_CompoundButton_DRAW_MASK +#define android_widget_CompoundButton_DRAW_MASK 128L +#undef android_widget_CompoundButton_SCROLLBARS_NONE +#define android_widget_CompoundButton_SCROLLBARS_NONE 0L +#undef android_widget_CompoundButton_SCROLLBARS_HORIZONTAL +#define android_widget_CompoundButton_SCROLLBARS_HORIZONTAL 256L +#undef android_widget_CompoundButton_SCROLLBARS_VERTICAL +#define android_widget_CompoundButton_SCROLLBARS_VERTICAL 512L +#undef android_widget_CompoundButton_SCROLLBARS_MASK +#define android_widget_CompoundButton_SCROLLBARS_MASK 768L +#undef android_widget_CompoundButton_FILTER_TOUCHES_WHEN_OBSCURED +#define android_widget_CompoundButton_FILTER_TOUCHES_WHEN_OBSCURED 1024L +#undef android_widget_CompoundButton_OPTIONAL_FITS_SYSTEM_WINDOWS +#define android_widget_CompoundButton_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L +#undef android_widget_CompoundButton_FADING_EDGE_NONE +#define android_widget_CompoundButton_FADING_EDGE_NONE 0L +#undef android_widget_CompoundButton_FADING_EDGE_HORIZONTAL +#define android_widget_CompoundButton_FADING_EDGE_HORIZONTAL 4096L +#undef android_widget_CompoundButton_FADING_EDGE_VERTICAL +#define android_widget_CompoundButton_FADING_EDGE_VERTICAL 8192L +#undef android_widget_CompoundButton_FADING_EDGE_MASK +#define android_widget_CompoundButton_FADING_EDGE_MASK 12288L +#undef android_widget_CompoundButton_CLICKABLE +#define android_widget_CompoundButton_CLICKABLE 16384L +#undef android_widget_CompoundButton_DRAWING_CACHE_ENABLED +#define android_widget_CompoundButton_DRAWING_CACHE_ENABLED 32768L +#undef android_widget_CompoundButton_SAVE_DISABLED +#define android_widget_CompoundButton_SAVE_DISABLED 65536L +#undef android_widget_CompoundButton_SAVE_DISABLED_MASK +#define android_widget_CompoundButton_SAVE_DISABLED_MASK 65536L +#undef android_widget_CompoundButton_WILL_NOT_CACHE_DRAWING +#define android_widget_CompoundButton_WILL_NOT_CACHE_DRAWING 131072L +#undef android_widget_CompoundButton_FOCUSABLE_IN_TOUCH_MODE +#define android_widget_CompoundButton_FOCUSABLE_IN_TOUCH_MODE 262144L +#undef android_widget_CompoundButton_DRAWING_CACHE_QUALITY_LOW +#define android_widget_CompoundButton_DRAWING_CACHE_QUALITY_LOW 524288L +#undef android_widget_CompoundButton_DRAWING_CACHE_QUALITY_HIGH +#define android_widget_CompoundButton_DRAWING_CACHE_QUALITY_HIGH 1048576L +#undef android_widget_CompoundButton_DRAWING_CACHE_QUALITY_AUTO +#define android_widget_CompoundButton_DRAWING_CACHE_QUALITY_AUTO 0L +#undef android_widget_CompoundButton_DRAWING_CACHE_QUALITY_MASK +#define android_widget_CompoundButton_DRAWING_CACHE_QUALITY_MASK 1572864L +#undef android_widget_CompoundButton_LONG_CLICKABLE +#define android_widget_CompoundButton_LONG_CLICKABLE 2097152L +#undef android_widget_CompoundButton_DUPLICATE_PARENT_STATE +#define android_widget_CompoundButton_DUPLICATE_PARENT_STATE 4194304L +#undef android_widget_CompoundButton_SCROLLBARS_INSIDE_OVERLAY +#define android_widget_CompoundButton_SCROLLBARS_INSIDE_OVERLAY 0L +#undef android_widget_CompoundButton_SCROLLBARS_INSIDE_INSET +#define android_widget_CompoundButton_SCROLLBARS_INSIDE_INSET 16777216L +#undef android_widget_CompoundButton_SCROLLBARS_OUTSIDE_OVERLAY +#define android_widget_CompoundButton_SCROLLBARS_OUTSIDE_OVERLAY 33554432L +#undef android_widget_CompoundButton_SCROLLBARS_OUTSIDE_INSET +#define android_widget_CompoundButton_SCROLLBARS_OUTSIDE_INSET 50331648L +#undef android_widget_CompoundButton_SCROLLBARS_INSET_MASK +#define android_widget_CompoundButton_SCROLLBARS_INSET_MASK 16777216L +#undef android_widget_CompoundButton_SCROLLBARS_OUTSIDE_MASK +#define android_widget_CompoundButton_SCROLLBARS_OUTSIDE_MASK 33554432L +#undef android_widget_CompoundButton_SCROLLBARS_STYLE_MASK +#define android_widget_CompoundButton_SCROLLBARS_STYLE_MASK 50331648L +#undef android_widget_CompoundButton_KEEP_SCREEN_ON +#define android_widget_CompoundButton_KEEP_SCREEN_ON 67108864L +#undef android_widget_CompoundButton_SOUND_EFFECTS_ENABLED +#define android_widget_CompoundButton_SOUND_EFFECTS_ENABLED 134217728L +#undef android_widget_CompoundButton_HAPTIC_FEEDBACK_ENABLED +#define android_widget_CompoundButton_HAPTIC_FEEDBACK_ENABLED 268435456L +#undef android_widget_CompoundButton_PARENT_SAVE_DISABLED +#define android_widget_CompoundButton_PARENT_SAVE_DISABLED 536870912L +#undef android_widget_CompoundButton_PARENT_SAVE_DISABLED_MASK +#define android_widget_CompoundButton_PARENT_SAVE_DISABLED_MASK 536870912L +#undef android_widget_CompoundButton_FOCUSABLES_ALL +#define android_widget_CompoundButton_FOCUSABLES_ALL 0L +#undef android_widget_CompoundButton_FOCUSABLES_TOUCH_MODE +#define android_widget_CompoundButton_FOCUSABLES_TOUCH_MODE 1L +#undef android_widget_CompoundButton_FOCUS_BACKWARD +#define android_widget_CompoundButton_FOCUS_BACKWARD 1L +#undef android_widget_CompoundButton_FOCUS_FORWARD +#define android_widget_CompoundButton_FOCUS_FORWARD 2L +#undef android_widget_CompoundButton_FOCUS_LEFT +#define android_widget_CompoundButton_FOCUS_LEFT 17L +#undef android_widget_CompoundButton_FOCUS_UP +#define android_widget_CompoundButton_FOCUS_UP 33L +#undef android_widget_CompoundButton_FOCUS_RIGHT +#define android_widget_CompoundButton_FOCUS_RIGHT 66L +#undef android_widget_CompoundButton_FOCUS_DOWN +#define android_widget_CompoundButton_FOCUS_DOWN 130L +#undef android_widget_CompoundButton_MEASURED_SIZE_MASK +#define android_widget_CompoundButton_MEASURED_SIZE_MASK 16777215L +#undef android_widget_CompoundButton_MEASURED_STATE_MASK +#define android_widget_CompoundButton_MEASURED_STATE_MASK -16777216L +#undef android_widget_CompoundButton_MEASURED_HEIGHT_STATE_SHIFT +#define android_widget_CompoundButton_MEASURED_HEIGHT_STATE_SHIFT 16L +#undef android_widget_CompoundButton_MEASURED_STATE_TOO_SMALL +#define android_widget_CompoundButton_MEASURED_STATE_TOO_SMALL 16777216L +#undef android_widget_CompoundButton_PFLAG2_DRAG_CAN_ACCEPT +#define android_widget_CompoundButton_PFLAG2_DRAG_CAN_ACCEPT 1L +#undef android_widget_CompoundButton_PFLAG2_DRAG_HOVERED +#define android_widget_CompoundButton_PFLAG2_DRAG_HOVERED 2L +#undef android_widget_CompoundButton_LAYOUT_DIRECTION_LTR +#define android_widget_CompoundButton_LAYOUT_DIRECTION_LTR 0L +#undef android_widget_CompoundButton_LAYOUT_DIRECTION_RTL +#define android_widget_CompoundButton_LAYOUT_DIRECTION_RTL 1L +#undef android_widget_CompoundButton_LAYOUT_DIRECTION_INHERIT +#define android_widget_CompoundButton_LAYOUT_DIRECTION_INHERIT 2L +#undef android_widget_CompoundButton_LAYOUT_DIRECTION_LOCALE +#define android_widget_CompoundButton_LAYOUT_DIRECTION_LOCALE 3L +#undef android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT +#define android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L +#undef android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_MASK +#define android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_MASK 12L +#undef android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL +#define android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L +#undef android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_RESOLVED +#define android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L +#undef android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK +#define android_widget_CompoundButton_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +#undef android_widget_CompoundButton_STATUS_BAR_HIDDEN +#define android_widget_CompoundButton_STATUS_BAR_HIDDEN 1L +#undef android_widget_CompoundButton_STATUS_BAR_VISIBLE +#define android_widget_CompoundButton_STATUS_BAR_VISIBLE 0L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_FULLSCREEN +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_FULLSCREEN 4L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_HIDE_NAVIGATION +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_IMMERSIVE +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_IMMERSIVE 2048L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_IMMERSIVE_STICKY +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_LAYOUT_STABLE +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_LOW_PROFILE +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_LOW_PROFILE 1L +#undef android_widget_CompoundButton_SYSTEM_UI_FLAG_VISIBLE +#define android_widget_CompoundButton_SYSTEM_UI_FLAG_VISIBLE 0L +#undef android_widget_CompoundButton_SYSTEM_UI_LAYOUT_FLAGS +#define android_widget_CompoundButton_SYSTEM_UI_LAYOUT_FLAGS 1536L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_CENTER +#define android_widget_CompoundButton_TEXT_ALIGNMENT_CENTER 4L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_GRAVITY +#define android_widget_CompoundButton_TEXT_ALIGNMENT_GRAVITY 1L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_INHERIT +#define android_widget_CompoundButton_TEXT_ALIGNMENT_INHERIT 0L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_TEXT_END +#define android_widget_CompoundButton_TEXT_ALIGNMENT_TEXT_END 3L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_TEXT_START +#define android_widget_CompoundButton_TEXT_ALIGNMENT_TEXT_START 2L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_VIEW_END +#define android_widget_CompoundButton_TEXT_ALIGNMENT_VIEW_END 6L +#undef android_widget_CompoundButton_TEXT_ALIGNMENT_VIEW_START +#define android_widget_CompoundButton_TEXT_ALIGNMENT_VIEW_START 5L +#undef android_widget_CompoundButton_TEXT_DIRECTION_ANY_RTL +#define android_widget_CompoundButton_TEXT_DIRECTION_ANY_RTL 2L +#undef android_widget_CompoundButton_TEXT_DIRECTION_FIRST_STRONG +#define android_widget_CompoundButton_TEXT_DIRECTION_FIRST_STRONG 1L +#undef android_widget_CompoundButton_TEXT_DIRECTION_INHERIT +#define android_widget_CompoundButton_TEXT_DIRECTION_INHERIT 0L +#undef android_widget_CompoundButton_TEXT_DIRECTION_LOCALE +#define android_widget_CompoundButton_TEXT_DIRECTION_LOCALE 5L +#undef android_widget_CompoundButton_TEXT_DIRECTION_LTR +#define android_widget_CompoundButton_TEXT_DIRECTION_LTR 3L +#undef android_widget_CompoundButton_TEXT_DIRECTION_RTL +#define android_widget_CompoundButton_TEXT_DIRECTION_RTL 4L +/* + * Class: android_widget_CompoundButton + * Method: native_constructor + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J + */ +JNIEXPORT jlong JNICALL Java_android_widget_CompoundButton_native_1constructor + (JNIEnv *, jobject, jobject, jobject); + +/* + * Class: android_widget_CompoundButton + * Method: setOnCheckedChangeListener + * Signature: (Landroid/widget/CompoundButton/OnCheckedChangeListener;)V + */ +JNIEXPORT void JNICALL Java_android_widget_CompoundButton_setOnCheckedChangeListener + (JNIEnv *, jobject, jobject); + +/* + * Class: android_widget_CompoundButton + * Method: setChecked + * Signature: (Z)V + */ +JNIEXPORT void JNICALL Java_android_widget_CompoundButton_setChecked + (JNIEnv *, jobject, jboolean); + +/* + * Class: android_widget_CompoundButton + * Method: isChecked + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_widget_CompoundButton_isChecked + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/api-impl-jni/widgets/android_widget_CompoundButton.c b/src/api-impl-jni/widgets/android_widget_CompoundButton.c new file mode 100644 index 00000000..a2985c42 --- /dev/null +++ b/src/api-impl-jni/widgets/android_widget_CompoundButton.c @@ -0,0 +1,46 @@ +#include + +#include "WrapperWidget.h" +#include "../util.h" + +#include "../generated_headers/android_widget_CompoundButton.h" +#include "jni.h" + +JNIEXPORT jlong JNICALL Java_android_widget_CompoundButton_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) +{ + GtkWidget *wrapper = g_object_ref(wrapper_widget_new()); + GtkWidget *switcher = gtk_switch_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), switcher); + wrapper_widget_set_jobject(WRAPPER_WIDGET(wrapper), env, this); + return _INTPTR(switcher); +} + +JNIEXPORT void JNICALL Java_android_widget_CompoundButton_setChecked(JNIEnv *env, jobject this, jboolean checked) +{ + gtk_switch_set_active(GTK_SWITCH(_PTR(_GET_LONG_FIELD(this, "widget"))), checked); +} + +JNIEXPORT jboolean JNICALL Java_android_widget_CompoundButton_isChecked(JNIEnv *env, jobject this) +{ + return gtk_switch_get_active(GTK_SWITCH(_PTR(_GET_LONG_FIELD(this, "widget")))); +} + +static gboolean on_state_set(GtkSwitch* self, gboolean state, jobject listener) +{ + JNIEnv *env = get_jni_env(); + WrapperWidget *wrapper = WRAPPER_WIDGET(gtk_widget_get_parent(GTK_WIDGET(self))); + jmethodID on_check_changed = _METHOD(_CLASS(listener), "onCheckedChanged", "(Landroid/widget/CompoundButton;Z)V"); + (*env)->CallVoidMethod(env, listener, on_check_changed, wrapper->jobj, state); + return FALSE; +} + +JNIEXPORT void JNICALL Java_android_widget_CompoundButton_setOnCheckedChangeListener(JNIEnv *env, jobject this, jobject listener) +{ + GtkSwitch *switcher = GTK_SWITCH(_PTR(_GET_LONG_FIELD(this, "widget"))); + + g_signal_handlers_block_matched(switcher, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, on_state_set, NULL); + + if (listener) { + g_signal_connect(switcher, "state-set", G_CALLBACK(on_state_set), _REF(listener)); + } +} diff --git a/src/api-impl/android/graphics/Canvas.java b/src/api-impl/android/graphics/Canvas.java index 0d3c029c..5b4a3e9f 100644 --- a/src/api-impl/android/graphics/Canvas.java +++ b/src/api-impl/android/graphics/Canvas.java @@ -383,6 +383,8 @@ public class Canvas { return false; } + public void restoreToCount(int count) {} + private static native void native_drawText(long skia_canvas, CharSequence text, int start, int end, float x, float y, long skia_font, long skia_paint); private static native void native_drawRect(long skia_canvas, float left, float top, float right, float bottom, long skia_paint); private static native void native_drawLine(long skia_canvas, long widget, float startX, float startY, float stopX, float stopY, long skia_paint); diff --git a/src/api-impl/android/widget/Button.java b/src/api-impl/android/widget/Button.java index ea731b34..dc5074f7 100644 --- a/src/api-impl/android/widget/Button.java +++ b/src/api-impl/android/widget/Button.java @@ -26,7 +26,7 @@ public class Button extends TextView { protected native void native_setOnClickListener(long widget, OnClickListener l); @Override - public final void setText(CharSequence text) { + public void setText(CharSequence text) { native_setText(widget, String.valueOf(text)); } diff --git a/src/api-impl/android/widget/Checkable.java b/src/api-impl/android/widget/Checkable.java index b84da037..842495de 100644 --- a/src/api-impl/android/widget/Checkable.java +++ b/src/api-impl/android/widget/Checkable.java @@ -1,4 +1,6 @@ package android.widget; public interface Checkable { + + public void setChecked(boolean checked); } \ No newline at end of file diff --git a/src/api-impl/android/widget/CompoundButton.java b/src/api-impl/android/widget/CompoundButton.java index 8c43949a..55fd8f30 100644 --- a/src/api-impl/android/widget/CompoundButton.java +++ b/src/api-impl/android/widget/CompoundButton.java @@ -3,10 +3,8 @@ package android.widget; import android.content.Context; import android.util.AttributeSet; -public abstract class CompoundButton extends Button { +public abstract class CompoundButton extends Button implements Checkable { - private boolean checked; - public CompoundButton(Context context) { super(context); } @@ -15,15 +13,24 @@ public abstract class CompoundButton extends Button { super(context, attributeSet); } + @Override + protected native long native_constructor(Context context, AttributeSet attrs); + public static interface OnCheckedChangeListener {} - public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {} + public native void setOnCheckedChangeListener(OnCheckedChangeListener listener); - public void setChecked(boolean checked) { - this.checked = checked; - } + public native void setChecked(boolean checked); - public boolean isChecked() { - return checked; - } + public native boolean isChecked(); + + // following methods are overridden to prevent calling incompatible methods from superclasses + @Override + public void setOnClickListener(final OnClickListener l) {} + @Override + public void setText(CharSequence text) {} + @Override + public void setTextColor(int color) {} + @Override + public void setTextSize(float size) {} } diff --git a/src/api-impl/android/widget/Switch.java b/src/api-impl/android/widget/Switch.java index a95ff539..8c93a420 100644 --- a/src/api-impl/android/widget/Switch.java +++ b/src/api-impl/android/widget/Switch.java @@ -13,6 +13,4 @@ public class Switch extends CompoundButton { super(context, attributeSet); } - public void setChecked(boolean checked) {} - }