Skip to content

Fix: Support Clickable Hyperlinks in Labels with TextType HTML (iOS & Android)#27907

Closed
bhavanesh2001 wants to merge 41 commits intodotnet:mainfrom
bhavanesh2001:fix_21328_android
Closed

Fix: Support Clickable Hyperlinks in Labels with TextType HTML (iOS & Android)#27907
bhavanesh2001 wants to merge 41 commits intodotnet:mainfrom
bhavanesh2001:fix_21328_android

Conversation

@bhavanesh2001
Copy link
Copy Markdown
Contributor

Description of Change

This PR is an attempt to fix an issue where hyperlinks in Labels with TextType="Html" were not clickable on iOS and Android.

iOS

  • Added UITapGestureRecognizer to handle hyperlink taps in UILabel.
  • Prevented duplicate gesture attachments when updating text.
Screen.Recording_iOS.mov
Screen.Recording_Maccatalyst.mov

Android

  • Ensured TextView.MovementMethod is set to enable clickable links.
Screen.Recording_android.mov

Issues Fixed

Fixes #21328

@bhavanesh2001 bhavanesh2001 requested a review from a team as a code owner February 19, 2025 16:48
@dotnet-policy-service dotnet-policy-service bot added the community ✨ Community Contribution label Feb 19, 2025
@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Hey there @bhavanesh2001! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@jsuarezruiz
Copy link
Copy Markdown
Contributor

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 3 pipeline(s).

@jsuarezruiz
Copy link
Copy Markdown
Contributor

/rebase

rmarinho and others added 14 commits March 7, 2025 19:52
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…et#28025)

* Implement the option to change system theme on Appium

* Fix build error
…net#28072)

* Resolved catalyst failures

* Update ShellTabBarTests.iOS.cs

* Update ShellTabBarTests.iOS.cs

* Addressed review concerns
* [Android] Fixed the ScrollbarVisibility issues

* Committed the review changes and added additional test

* Renamed Variable
…en dynamically updated. (dotnet#27742)

* Fixed The FontImageSource icon color does not change in the TabbedPage when dynamically updated.

* Updated code changes
* Update SkiaSharp package versions

* Update GTK to match the new versions

* Use the new SkiaSharp APIs in resizetizer

* Regenerate resizetizer test images

* Improve test assertions

* Color ToString is invariant

* Update Graphics.Skia with new SkiaSharp APIs

* Regenerate graphics images

* Force all images to be regenerated on CI

* Fix stack overflow by setting the typeface
* Fixed-ImageButton-Padding-Issue-iOS

* Modified-code

* Optimized-code

* Added-Mac-Snapshot

* fixed-conflicts

* Removed-nullable-directive

* Resolved-Conflicts

* Modified-Code

* Updated-Snapshots

* Modified-Code

* Modified-Snapshot

---------

Co-authored-by: prakashKannanSf3972 <127308739+prakashKannanSf3972@users.noreply.github.com>
Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
…otnet#15668)

* IsNullOrEmpty for Paint not returning true if Colors are not set

* Updated unit test

* Updated tests

* More tests

* Added more tests

* Updated conditions

* Added more tests

* Changed condition to work when only one collor is missing

---------

Co-authored-by: Javier Suárez <javiersuarezruiz@hotmail.com>
albyrock87 and others added 23 commits March 7, 2025 19:52
* added appium class for catalyst stepper

* modified changes

* enable mac for stepper

* updated changes
Context: https://github.com/xamarin/yaml-templates/commit/96d7858cce242c5eea76028f3f051bb9ffda793c

Adds the VS manifest zips needed by the workload versions VS insertion
pipeline to Maestro publishing.

The first update to VS that includes these changes will have to be done
manually, as the manifest names are also changing to work with the new
pipeline.
…net#28137)

* Increase stability for CI failure Issues

* Update src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue25889.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…otnet#28065)

* Use MSBuild for provisioning

Appium and Android SDK to start

* We use Nexus 5X as the device type currently

* Fix provision call / logs path

* Ignore exit codes

NPM may not return an ok exit code if there's no appium installed.  Similarly, we may get no driver list versions and a failed exit code when we query for appium drivers if none are installed.

* Fix call to target

* Provision JDK as well

* Provision from pipeline

* yaml fixes

* Yaml fix

* Add project to build invocation

* Restore dotnet tools first

* Restore tools after clear cache

* Ensure winget is installed first

* Download jdk msi and install it

* Different download location

* Property name for downloaded file

* Separate provisioning steps

* Log more jdk list info

* Update provision.yml

* Fix batching

* Log msiexec install

* Split up android provisioning steps

* Fix indentation

* Update tool with bugfix

* JDK: Try default installdir on windows

* Android: Option to install only default api levels

* Update provision.yml

* Fix parameter passing

* MSBuild log diag

* Skip setting JAVA_HOME

* Compatible gradle versions for JDK 17

* Set JDK_HOME again

* Try to pick up jdk for gradle

* Fix type/var name

* Always look up android home

* Simplify locate of best JDK

* Cake runs with stdout

* Disable the cleaner as per comment

* Less verbose logging

* Update and comment out Tools entry point for now

* Remove dup merge step

* Add condition for skipping appium doctor

* Skip the unsupported task

* Only install the image and avd wea are using

* windows or mac/linux

* apples don't like linus

* this too

* including

* better linux things

* no kvm on azure

* Revert "no kvm on azure"

This reverts commit cdd69a3.

* AndroidSdkDirectory

* log the info

* info

* and latest

* saf

* Provision the JDK on linux too

* sudo

* list packages

* remove latest

* this

* this

* disable kvm for now

* Use new emu

* better things

* provisioning creates the emulators

* KVM

* order

* try this

* machines

* better logs

* oops

* cleanups

* test boot

* oops

* test passed

* try splitting

* this

* inside

* oops

* oooops

* 2

* no need for menus in the build

* -v:detailed

* this

* yaml amirite

* faster!

* moar!

* ${{ parameters.appArtifactName }}

* this

* try this

* that

* more

* ${{ parameters.platform }}

* obj

* oops

* cake

* attempt 10 million

* skipDotNet

* sighs

* whaa

* ne

* oops

* safdd

* suspision

* maybe this one?

* to pwsh or not to pwsh

* give up for now

* test-only

* log things

* that

* this

* where is it???

* this

* windows has 2 separate builds

* maybe this

* merge the files and jobs

* this

* oops

* always publish

* better

* we can skip .net if we don't need it

* names

* this

* try this

* try again

* )

* yaml is not yaml-ing

* debugging yaml

* eq

* seems to always fail the first time

* split to speed up retries

* this

* better

* try harder

* better booting and reties

* this does nothing

* faster as this works

* faster!

* enable all

* Update eng/devices/android.cake

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Rui doesn't like my yaml

* flip that

* this

* FASTER!

* FAAAAAAASTERRRRR!!!!

* too fast?

* 27 is just terrible

* force

* mac is bad sometimes

* can't be const

* that bad!

* params can't use expressions

* revert for now

* no idea anymore

* sigh

* this

* CLEANUP IS COOL

* always()

---------

Co-authored-by: redth <jondick@gmail.com>
Co-authored-by: Jonathan Dick <jodick@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This will have some 'developer' dependency information that may be useful for ascertaining the compatibility/state of a development environment for the given workload version.
…g to get focus on it (dotnet#27851)

* Fixed the editor scroll position updated when we tap on the editor inside the collection view

* Added the test case and updated the fix

* Added the output images for iOS and android platform

* Updated the fix and added the output images

* Updated the test case

* Changed the output images for iOS and android for without cursor

* Removed unwanted namespace

* Modified the fix for editor scrolling to bottom with softkeyboard

* Updated the iOS output image.
There is a new "sample content" switch for the `dotnet new maui`
template that brings in various NuGets and things automatically.

None of these things are in the built-in AOT profile, so let's record
one specifically for this template. I also updated the other AOT
profiles, as I can see some of the latest changes in dotnet/main/main
calls different methods on startup.

Testing an average of 10 runs on a Pixel 7 Pro:

    $ dotnet new maui
    Before:
    Average(ms): 446
    Std Err(ms): 2.28035085019828
    Std Dev(ms): 7.21110255092798
    After:
    Average(ms): 441
    Std Err(ms): 5.09901951359278
    Std Dev(ms): 16.1245154965971

    $ dotnet new maui -sc
    Before:
    Average(ms): 1073.6
    Std Err(ms): 8.35623519694525
    Std Dev(ms): 26.4247358864127
    After:
    Average(ms): 832.1
    Std Err(ms): 5.65773806392625
    Std Dev(ms): 17.8913386866383

Since `dotnet new maui -sc` is still a bit slower, I will investigate
how to improve this in other PRs.
* Fix CSS file reloading on Mac

* Code review
* [test] Run Android device tests on linux

* [ci] Fix image name

* [Android] Remove androidPoolX64 pool
…ion - 16 (dotnet#27968)

* enable the test case for all platform

* comment modification

* comment modification

* comment modification

* added images

* added snapshot

* updated the changes

* code changes
…ion - 17 (dotnet#28011)

* Enabled the test cases in All platforms

* Enable the platform specific testcases for All platforms

* Updated Changes

* Updated Changes

* Update CarouselViewUITests.PositionVisibility.cs

* Added Snapshots

* Update CarouselViewUITests.PositionVisibility.cs
…s into device tests - 4 (dotnet#28105)

* Enabled the Opacity property

* code changes

* code change

* Enabled the Opacity property

* code changes

* code modifications

* changes

* Update src/Controls/tests/DeviceTests/Elements/CheckBox/CheckBoxTests.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/Controls/tests/DeviceTests/Elements/Entry/EntryTests.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* ios changes

* modified codes

---------

Co-authored-by: nivetha-nagalingam <nivetha.nagalingam@syncfusion.com>
Co-authored-by: Anandhan Rajagopal <97146406+anandhan-rajagopal@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* check the window

* check each responders window

* check LastScrollView Window
…urn false, still shows button in title bar" (dotnet#28189)

* reverted 25857 changes

* added comments
We only want the major version in `brew install --cask microsoft-openjdk@17` instead of the full version which would incorrectly attempt `brew install --cask microsoft-openjdk@17.0.12`.
… right after setting ItemsSource (dotnet#28194)

* Update PropertyPropagationExtensions.cs

* Update PropertyPropagationExtensions.cs

* Added a UI Test

* Performance improvement

* Update PropertyPropagationExtensions.cs

* Update PropertyPropagationExtensions.cs

* Update PropertyPropagationExtensions.cs

* Use foreach

* Use to array
@bhavanesh2001 bhavanesh2001 requested a review from a team as a code owner March 7, 2025 14:22
@sairam-the-dev
Copy link
Copy Markdown

This PR looks great.I'd love to see this reviewed and merged soon.

@bhavanesh2001
Copy link
Copy Markdown
Contributor Author

bhavanesh2001 commented Mar 12, 2025

Since i messed this up, Closing in favour of #28331

@bhavanesh2001 bhavanesh2001 deleted the fix_21328_android branch March 19, 2025 01:52
@github-actions github-actions bot locked and limited conversation to collaborators Apr 18, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Link in Label with TextType HTML is not clickable