diff --git a/src/others/observer/lv_observer.c b/src/others/observer/lv_observer.c
index f7257a19f2..d13d3b95f3 100644
--- a/src/others/observer/lv_observer.c
+++ b/src/others/observer/lv_observer.c
@@ -556,7 +556,10 @@ lv_observer_t * lv_label_bind_text(lv_obj_t * obj, lv_subject_t * subject, const
LV_ASSERT_NULL(obj);
if(fmt == NULL) {
- if(subject->type != LV_SUBJECT_TYPE_STRING && subject->type != LV_SUBJECT_TYPE_POINTER) {
+ if(subject->type == LV_SUBJECT_TYPE_INT) {
+ fmt = "%d";
+ }
+ else if(subject->type != LV_SUBJECT_TYPE_STRING && subject->type != LV_SUBJECT_TYPE_POINTER) {
LV_LOG_WARN("Incompatible subject type: %d", subject->type);
return NULL;
}
diff --git a/tests/src/test_cases/test_observer.c b/tests/src/test_cases/test_observer.c
index ebbf0e0d47..6ba28814f9 100644
--- a/tests/src/test_cases/test_observer.c
+++ b/tests/src/test_cases/test_observer.c
@@ -663,11 +663,11 @@ void test_observer_label_text_normal(void)
observer = lv_label_bind_text(obj, &subject_color, NULL);
TEST_ASSERT_EQUAL_PTR(NULL, observer);
- /*Cannot bind int*/
+ /*Bind it with "%d" if NULL is passed*/
static lv_subject_t subject_int;
- lv_subject_init_int(&subject_int, 0);
+ lv_subject_init_int(&subject_int, 10);
observer = lv_label_bind_text(obj, &subject_int, NULL);
- TEST_ASSERT_EQUAL_PTR(NULL, observer);
+ TEST_ASSERT_EQUAL_STRING("10", lv_label_get_text(obj));
/*Bind to string*/
static char buf[32];
diff --git a/xmls/lv_label.xml b/xmls/lv_label.xml
index a70c165847..8abc48df60 100644
--- a/xmls/lv_label.xml
+++ b/xmls/lv_label.xml
@@ -23,5 +23,9 @@ Example
+
+
+
+
-
\ No newline at end of file
+
diff --git a/xmls/lv_slider.xml b/xmls/lv_slider.xml
index b9d0757169..0fed948b8f 100644
--- a/xmls/lv_slider.xml
+++ b/xmls/lv_slider.xml
@@ -28,5 +28,8 @@ Example
+
+
+
\ No newline at end of file