EinkBro 期待已久的功能 — 選取連結的文字!

Daniel Kao
Nov 3, 2023

--

期待了很久,一直不知道怎麼實作的功能終於做出來了!在 Android WebView中,一般來說,只可以長按非連結的文字,選取文字進行複製或其他的動作。如果想要選取連結上的文字的話,必須要用些小技巧才能達成。

下面的 sequence diagram 說明了如何透過一系列的操作達到這效果。

步驟

  • 在網頁載入完成後,要塞一段程式去偵測文字選取範圍改變時的區域
  • 當下達指令要選取連結文字時,要把點擊處的 a node 的 href 屬性拿掉
  • 再模擬一次長按的行為 (simulateLongClick())
  • 等選取好連結字串後,再回復原先 a element 中的 href 屬性

接著再改善

  • 把原先的 ActionMode DialogFragment 變成是Compose 的 Dialog,讓它不會對 ActionMode selection anchor 的顯示造成影響
  • 自行處理視窗超出畫面的問題
  • 第一步中的 udpateSelectionRection() 會回傳 Selection Range 的 position,可以用來調整 Context Menu 的位置

相關連結

--

--

Daniel Kao
Daniel Kao

Written by Daniel Kao

2023 年新書出版! Android 開源專案「真」實戰啟航:瀏覽器 App EinkBro 開發者帶你逐步從 UI 設計、UX 提升到多功能實現秘技全解析

No responses yet