From 7d70fde7c03b7371809e9c7b9029026a4fd6af28 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 1 Jan 2023 22:27:55 +0530 Subject: [PATCH] fix: newly added TextView has android:text attribute by default --- .../inflater/internal/adapters/TextViewAdapter.kt | 6 ++++-- .../itsaky/androidide/inflater/LayoutInflaterTest.kt | 11 +++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt index b5306fe5d..0d20f61f0 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAdapter.kt @@ -17,6 +17,7 @@ package com.itsaky.androidide.inflater.internal.adapters +import android.annotation.SuppressLint import android.graphics.Typeface import android.text.TextUtils import android.text.util.Linkify @@ -27,9 +28,9 @@ import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner import com.itsaky.androidide.annotations.uidesigner.IncludeInDesigner.Group.WIDGETS import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.resources.R import com.itsaky.androidide.inflater.models.UiWidget import com.itsaky.androidide.inflater.utils.newAttribute +import com.itsaky.androidide.resources.R import java.util.regex.Pattern /** @@ -129,9 +130,10 @@ open class TextViewAdapter : ViewAdapter() { ) } + @SuppressLint("SetTextI18n") override fun applyBasic(view: IView) { super.applyBasic(view) - view.addAttribute(newAttribute(view = view, name = "text", value = "AndroidIDE")) + (view.view as? TextView)?.text = "AndroidIDE" } protected open fun parseTextStyle(value: String): Int { diff --git a/xml-inflater/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt index c2ae9fc34..158cff6e3 100644 --- a/xml-inflater/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt +++ b/xml-inflater/src/test/java/com/itsaky/androidide/inflater/LayoutInflaterTest.kt @@ -30,10 +30,10 @@ import com.itsaky.androidide.inflater.internal.utils.IDTable import com.itsaky.androidide.inflater.utils.newAttribute import com.itsaky.androidide.projects.ProjectManager import com.itsaky.androidide.projects.api.AndroidModule +import java.io.File import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import java.io.File /** @author Akash Yadav */ @RunWith(RobolectricTestRunner::class) @@ -159,8 +159,7 @@ class LayoutInflaterTest { assertThat(inflated).hasSize(1) val root = inflated[0] as ViewGroupImpl - - + // verity the inflated layout hierarchy // this takes care of verifying that the generated XML elements will have proper XML tagsl assertThat(root.printHierarchy()) @@ -178,17 +177,17 @@ class LayoutInflaterTest { // TextView is used to inflate unsupported views assertThat(root[0].view).isInstanceOf(TextView::class.java) - + // TextView is also used for layouts which do not have any child viewsl assertThat(root[1].view).isInstanceOf(TextView::class.java) - + // FrameLayout is used to inflate unsupported layouts with child views assertThat(root[2].view).isInstanceOf(FrameLayout::class.java) assertThat(root[3].view).isInstanceOf(FrameLayout::class.java) assertThat((root[2] as ViewGroupImpl)[0].view).isInstanceOf(ImageView::class.java) assertThat((root[2] as ViewGroupImpl)[1].view).isInstanceOf(ImageView::class.java) - + // Unsupported child views assertThat((root[3] as ViewGroupImpl)[0].view).isInstanceOf(TextView::class.java) assertThat((root[3] as ViewGroupImpl)[1].view).isInstanceOf(TextView::class.java)