From d6acb15212fa48ff14770b97a0b0584834c403ac Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 21 Jul 2026 20:06:31 -0400 Subject: [PATCH 1/2] Add `MaterialTextView` to wrapper configuration --- Sources/AndroidMaterial/swift-java.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sources/AndroidMaterial/swift-java.config b/Sources/AndroidMaterial/swift-java.config index 159a0085..eafe510e 100644 --- a/Sources/AndroidMaterial/swift-java.config +++ b/Sources/AndroidMaterial/swift-java.config @@ -364,7 +364,8 @@ "com.google.android.material.tabs.TabLayoutMediator$PagerAdapterObserver" : "TabLayoutMediator.PagerAdapterObserver", "com.google.android.material.tabs.TabLayoutMediator$TabConfigurationStrategy" : "TabLayoutMediator.TabConfigurationStrategy", "com.google.android.material.tabs.TabLayoutMediator$TabLayoutOnPageChangeCallback" : "TabLayoutMediator.TabLayoutOnPageChangeCallback", - "com.google.android.material.tabs.TabLayoutMediator$ViewPagerOnTabSelectedListener" : "TabLayoutMediator.ViewPagerOnTabSelectedListener" + "com.google.android.material.tabs.TabLayoutMediator$ViewPagerOnTabSelectedListener" : "TabLayoutMediator.ViewPagerOnTabSelectedListener", + "com.google.android.material.textview.MaterialTextView" : "MaterialTextView" }, "classpath" : "jar/android.jar:jar/kotlin-stdlib.jar:jar/recyclerview.jar:jar/core.jar:jar/collection.jar:jar/customview.jar:jar/lifecycle-common.jar:jar/navigation-runtime.jar:jar/navigation-common.jar:jar/lifecycle-viewmodel.jar:jar/savedstate.jar:jar/lifecycle-viewmodel-savedstate.jar:jar/material.jar:jar/viewpager.jar:jar/fragment.jar:jar/coordinatorlayout.jar:jar/transition.jar:jar/appcompat.jar:jar/activity.jar:jar/vectordrawable.jar:jar/constraintlayout.jar:jar/cardview.jar:jar/vectordrawable-animated.jar:jar/appcompat-resources.jar:jar/viewpager2.jar:jar/dynamicanimation.jar:jar/emoji2.jar" } From f1918908cf1edbb007d4c2a7c36cc596517c146d Mon Sep 17 00:00:00 2001 From: Alsey Coleman Miller Date: Tue, 21 Jul 2026 20:06:32 -0400 Subject: [PATCH 2/2] Add `MaterialTextView` binding --- .../AndroidMaterial/MaterialTextView.swift | 527 ++++++++++++++++++ 1 file changed, 527 insertions(+) create mode 100644 Sources/AndroidMaterial/MaterialTextView.swift diff --git a/Sources/AndroidMaterial/MaterialTextView.swift b/Sources/AndroidMaterial/MaterialTextView.swift new file mode 100644 index 00000000..39b0b4a0 --- /dev/null +++ b/Sources/AndroidMaterial/MaterialTextView.swift @@ -0,0 +1,527 @@ +// Auto-generated by Java-to-Swift wrapper generator. +import AndroidContent +import AndroidUtil +import AndroidView +import AndroidWidget +import SwiftJava +import CSwiftJavaJNI + +@JavaClass("com.google.android.material.textview.MaterialTextView") +open class MaterialTextView: TextView { + @JavaMethod + @_nonoverride public convenience init(_ arg0: Context?, _ arg1: AttributeSet?, environment: JNIEnvironment? = nil) + + @JavaMethod + @_nonoverride public convenience init(_ arg0: Context?, _ arg1: AttributeSet?, _ arg2: Int32, environment: JNIEnvironment? = nil) + + @JavaMethod + @_nonoverride public convenience init(_ arg0: Context?, _ arg1: AttributeSet?, _ arg2: Int32, _ arg3: Int32, environment: JNIEnvironment? = nil) + + @JavaMethod + @_nonoverride public convenience init(_ arg0: Context?, environment: JNIEnvironment? = nil) + + @JavaMethod + open func setTextAppearance(_ arg0: Context?, _ arg1: Int32) + + @JavaMethod + open override func setLineHeight(_ arg0: Int32) +} +extension JavaClass { + @JavaStaticField(isFinal: true) + public var ICON_GRAVITY_START: Int32 + + @JavaStaticField(isFinal: true) + public var ICON_GRAVITY_TEXT_START: Int32 + + @JavaStaticField(isFinal: true) + public var ICON_GRAVITY_END: Int32 + + @JavaStaticField(isFinal: true) + public var ICON_GRAVITY_TEXT_END: Int32 + + @JavaStaticField(isFinal: true) + public var ICON_GRAVITY_TOP: Int32 + + @JavaStaticField(isFinal: true) + public var ICON_GRAVITY_TEXT_TOP: Int32 + + @JavaStaticField(isFinal: true) + public var PLATFORM_SUPPORTS_AUTOSIZE: Bool + + @JavaStaticField(isFinal: true) + public var AUTO_SIZE_TEXT_TYPE_NONE: Int32 + + @JavaStaticField(isFinal: true) + public var AUTO_SIZE_TEXT_TYPE_UNIFORM: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUSED_SEARCH_RESULT_INDEX_NONE: Int32 + + @JavaStaticField(isFinal: true) + public var ACCESSIBILITY_DATA_SENSITIVE_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var ACCESSIBILITY_DATA_SENSITIVE_NO: Int32 + + @JavaStaticField(isFinal: true) + public var ACCESSIBILITY_DATA_SENSITIVE_YES: Int32 + + @JavaStaticField(isFinal: true) + public var ACCESSIBILITY_LIVE_REGION_ASSERTIVE: Int32 + + @JavaStaticField(isFinal: true) + public var ACCESSIBILITY_LIVE_REGION_NONE: Int32 + + @JavaStaticField(isFinal: true) + public var ACCESSIBILITY_LIVE_REGION_POLITE: Int32 + + @JavaStaticField(isFinal: true) + public var ALPHA: Property! + + @JavaStaticField(isFinal: true) + public var AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS: Int32 + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_CREDIT_CARD_NUMBER: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_EMAIL_ADDRESS: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_NAME: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_PASSWORD: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_PHONE: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_POSTAL_ADDRESS: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_POSTAL_CODE: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_HINT_USERNAME: String + + @JavaStaticField(isFinal: true) + public var AUTOFILL_TYPE_DATE: Int32 + + @JavaStaticField(isFinal: true) + public var AUTOFILL_TYPE_LIST: Int32 + + @JavaStaticField(isFinal: true) + public var AUTOFILL_TYPE_NONE: Int32 + + @JavaStaticField(isFinal: true) + public var AUTOFILL_TYPE_TEXT: Int32 + + @JavaStaticField(isFinal: true) + public var AUTOFILL_TYPE_TOGGLE: Int32 + + @JavaStaticField(isFinal: true) + public var CONTENT_SENSITIVITY_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var CONTENT_SENSITIVITY_NOT_SENSITIVE: Int32 + + @JavaStaticField(isFinal: true) + public var CONTENT_SENSITIVITY_SENSITIVE: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_ACCESSIBILITY_ACTION: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_GLOBAL: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_GLOBAL_SAME_APPLICATION: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_GLOBAL_URI_READ: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_GLOBAL_URI_WRITE: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_OPAQUE: Int32 + + @JavaStaticField(isFinal: true) + public var DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Int32 + + @JavaStaticField(isFinal: true) + public var DRAWING_CACHE_QUALITY_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var DRAWING_CACHE_QUALITY_HIGH: Int32 + + @JavaStaticField(isFinal: true) + public var DRAWING_CACHE_QUALITY_LOW: Int32 + + @JavaStaticField(isFinal: true) + public var FIND_VIEWS_WITH_CONTENT_DESCRIPTION: Int32 + + @JavaStaticField(isFinal: true) + public var FIND_VIEWS_WITH_TEXT: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUSABLE: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUSABLES_ALL: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUSABLES_TOUCH_MODE: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUSABLE_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUS_BACKWARD: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUS_DOWN: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUS_FORWARD: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUS_LEFT: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUS_RIGHT: Int32 + + @JavaStaticField(isFinal: true) + public var FOCUS_UP: Int32 + + @JavaStaticField(isFinal: true) + public var GONE: Int32 + + @JavaStaticField(isFinal: true) + public var HAPTIC_FEEDBACK_ENABLED: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_ACCESSIBILITY_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_ACCESSIBILITY_NO: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_ACCESSIBILITY_YES: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_AUTOFILL_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_AUTOFILL_NO: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_AUTOFILL_YES: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_CONTENT_CAPTURE_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_CONTENT_CAPTURE_NO: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_CONTENT_CAPTURE_YES: Int32 + + @JavaStaticField(isFinal: true) + public var IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS: Int32 + + @JavaStaticField(isFinal: true) + public var INVISIBLE: Int32 + + @JavaStaticField(isFinal: true) + public var KEEP_SCREEN_ON: Int32 + + @JavaStaticField(isFinal: true) + public var LAYER_TYPE_HARDWARE: Int32 + + @JavaStaticField(isFinal: true) + public var LAYER_TYPE_NONE: Int32 + + @JavaStaticField(isFinal: true) + public var LAYER_TYPE_SOFTWARE: Int32 + + @JavaStaticField(isFinal: true) + public var LAYOUT_DIRECTION_INHERIT: Int32 + + @JavaStaticField(isFinal: true) + public var LAYOUT_DIRECTION_LOCALE: Int32 + + @JavaStaticField(isFinal: true) + public var LAYOUT_DIRECTION_LTR: Int32 + + @JavaStaticField(isFinal: true) + public var LAYOUT_DIRECTION_RTL: Int32 + + @JavaStaticField(isFinal: true) + public var MEASURED_HEIGHT_STATE_SHIFT: Int32 + + @JavaStaticField(isFinal: true) + public var MEASURED_SIZE_MASK: Int32 + + @JavaStaticField(isFinal: true) + public var MEASURED_STATE_MASK: Int32 + + @JavaStaticField(isFinal: true) + public var MEASURED_STATE_TOO_SMALL: Int32 + + @JavaStaticField(isFinal: true) + public var NOT_FOCUSABLE: Int32 + + @JavaStaticField(isFinal: true) + public var NO_ID: Int32 + + @JavaStaticField(isFinal: true) + public var OVER_SCROLL_ALWAYS: Int32 + + @JavaStaticField(isFinal: true) + public var OVER_SCROLL_IF_CONTENT_SCROLLS: Int32 + + @JavaStaticField(isFinal: true) + public var OVER_SCROLL_NEVER: Int32 + + @JavaStaticField(isFinal: true) + public var REQUESTED_FRAME_RATE_CATEGORY_DEFAULT: Float + + @JavaStaticField(isFinal: true) + public var REQUESTED_FRAME_RATE_CATEGORY_HIGH: Float + + @JavaStaticField(isFinal: true) + public var REQUESTED_FRAME_RATE_CATEGORY_LOW: Float + + @JavaStaticField(isFinal: true) + public var REQUESTED_FRAME_RATE_CATEGORY_NORMAL: Float + + @JavaStaticField(isFinal: true) + public var REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE: Float + + @JavaStaticField(isFinal: true) + public var ROTATION: Property! + + @JavaStaticField(isFinal: true) + public var ROTATION_X: Property! + + @JavaStaticField(isFinal: true) + public var ROTATION_Y: Property! + + @JavaStaticField(isFinal: true) + public var SCALE_X: Property! + + @JavaStaticField(isFinal: true) + public var SCALE_Y: Property! + + @JavaStaticField(isFinal: true) + public var SCREEN_STATE_OFF: Int32 + + @JavaStaticField(isFinal: true) + public var SCREEN_STATE_ON: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBARS_INSIDE_INSET: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBARS_INSIDE_OVERLAY: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBARS_OUTSIDE_INSET: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBARS_OUTSIDE_OVERLAY: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBAR_POSITION_DEFAULT: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBAR_POSITION_LEFT: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLLBAR_POSITION_RIGHT: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_AXIS_HORIZONTAL: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_AXIS_NONE: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_AXIS_VERTICAL: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_CAPTURE_HINT_AUTO: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_CAPTURE_HINT_EXCLUDE: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_CAPTURE_HINT_INCLUDE: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_INDICATOR_BOTTOM: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_INDICATOR_END: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_INDICATOR_LEFT: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_INDICATOR_RIGHT: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_INDICATOR_START: Int32 + + @JavaStaticField(isFinal: true) + public var SCROLL_INDICATOR_TOP: Int32 + + @JavaStaticField(isFinal: true) + public var SOUND_EFFECTS_ENABLED: Int32 + + @JavaStaticField(isFinal: true) + public var STATUS_BAR_HIDDEN: Int32 + + @JavaStaticField(isFinal: true) + public var STATUS_BAR_VISIBLE: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_FULLSCREEN: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_HIDE_NAVIGATION: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_IMMERSIVE: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_IMMERSIVE_STICKY: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_LAYOUT_STABLE: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_LIGHT_STATUS_BAR: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_LOW_PROFILE: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_FLAG_VISIBLE: Int32 + + @JavaStaticField(isFinal: true) + public var SYSTEM_UI_LAYOUT_FLAGS: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_CENTER: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_GRAVITY: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_INHERIT: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_TEXT_END: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_TEXT_START: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_VIEW_END: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_ALIGNMENT_VIEW_START: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_ANY_RTL: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_FIRST_STRONG: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_FIRST_STRONG_LTR: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_FIRST_STRONG_RTL: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_INHERIT: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_LOCALE: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_LTR: Int32 + + @JavaStaticField(isFinal: true) + public var TEXT_DIRECTION_RTL: Int32 + + @JavaStaticField(isFinal: true) + public var TRANSLATION_X: Property! + + @JavaStaticField(isFinal: true) + public var TRANSLATION_Y: Property! + + @JavaStaticField(isFinal: true) + public var TRANSLATION_Z: Property! + + @JavaStaticField(isFinal: true) + public var VISIBLE: Int32 + + @JavaStaticField(isFinal: true) + public var X: Property! + + @JavaStaticField(isFinal: true) + public var Y: Property! + + @JavaStaticField(isFinal: true) + public var Z: Property! +}