EinkBro 期待已久的功能 — 選取連結的文字!
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 的位置