diff --git a/src/api-impl-jni/generated_headers/android_widget_TextView.h b/src/api-impl-jni/generated_headers/android_widget_TextView.h index 2df95767..e80bf33f 100644 --- a/src/api-impl-jni/generated_headers/android_widget_TextView.h +++ b/src/api-impl-jni/generated_headers/android_widget_TextView.h @@ -231,6 +231,14 @@ JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setText JNIEXPORT void JNICALL Java_android_widget_TextView_setTextSize (JNIEnv *, jobject, jfloat); +/* + * Class: android_widget_TextView + * Method: native_setTextColor + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setTextColor + (JNIEnv *, jobject, jint); + #ifdef __cplusplus } #endif diff --git a/src/api-impl-jni/widgets/android_widget_TextView.c b/src/api-impl-jni/widgets/android_widget_TextView.c index 222b26a3..86a7e6e2 100644 --- a/src/api-impl-jni/widgets/android_widget_TextView.c +++ b/src/api-impl-jni/widgets/android_widget_TextView.c @@ -29,6 +29,20 @@ JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setText(JNIEnv *env, gtk_label_set_text(GTK_LABEL(_PTR(_GET_LONG_FIELD(this, "widget"))), _CSTRING(charseq)); } +// FIXME: this will probably behave unfortunately if called multiple times +JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setTextColor(JNIEnv *env, jobject this, jint color) +{ + GtkLabel *label = GTK_LABEL(_PTR(_GET_LONG_FIELD(this, "widget"))); + + GtkCssProvider *css_provider = gtk_css_provider_new(); + + char *css_string = g_markup_printf_escaped("* { color: #%06x; }", color & 0xFFFFFF); + gtk_css_provider_load_from_string(css_provider, css_string); + g_free(css_string); + + gtk_style_context_add_provider(gtk_widget_get_style_context(GTK_WIDGET(label)), GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); +} + JNIEXPORT void JNICALL Java_android_widget_TextView_setTextSize(JNIEnv *env, jobject this, jfloat size) { GtkLabel *label = GTK_LABEL(_PTR(_GET_LONG_FIELD(this, "widget"))); diff --git a/src/api-impl/android/content/res/Resources.java b/src/api-impl/android/content/res/Resources.java index ae321c25..5c58b88b 100644 --- a/src/api-impl/android/content/res/Resources.java +++ b/src/api-impl/android/content/res/Resources.java @@ -845,7 +845,7 @@ public class Resources { * @return Returns a ColorStateList object containing either a single * solid color or multiple colors that can be selected based on a state. */ - public ColorStateList getColorStateList(int id) throws NotFoundException { /* + public ColorStateList getColorStateList(int id) throws NotFoundException { TypedValue value; synchronized (mAccessLock) { value = mTmpValue; @@ -862,8 +862,7 @@ public class Resources { mTmpValue = value; } } - return res;*/ - return new ColorStateList(new int[][] {new int[0]}, new int[1]); + return res; } /** diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java index b308cceb..bb2d101f 100644 --- a/src/api-impl/android/widget/TextView.java +++ b/src/api-impl/android/widget/TextView.java @@ -71,8 +71,13 @@ public class TextView extends View { public native final void native_setText(String text); public native void setTextSize(float size); - public void setTextColor(int color) {} - public void setTextColor(ColorStateList colors) {} + public native final void native_setTextColor(int color); + public void setTextColor(int color) { + native_setTextColor(color); + } + public void setTextColor(ColorStateList colors) { + setTextColor(colors.getDefaultColor()); // TODO: do this properly + } public void setTextSize(int unit, float size) {} public void setTypeface(Typeface tf, int style) {} public void setTypeface(Typeface tf) {}