私は似たようなことをすることに成功しました。
それを達成するための基本的な手がかりのいくつかを共有できると思いました。
WebView 全体のサイズを変更します。そのためには、WebView 全体が編集可能な html ページである必要があります。contenteditable を true に設定することで実現できます。
<body contenteditable='true' id='content'></body>
Web ビューにコンテキスト メニューを表示できます。ただし、最初に関連付けられている元のコンテキスト メニューを無効にする必要があるため、注意が必要です。
WebView editView;
...
EventDispatcher originalDispatcher = editView.getEventDispatcher(); editView.setEventDispatcher(新しい WebmenuEventDispatcher(originalDispatcher));
そして、これはイベント ディスパッチャー クラスです。
public class WebmenuEventDispatcher implements EventDispatcher {
private EventDispatcher originalDispatcher;
public WebmenuEventDispatcher(EventDispatcher originalDispatcher) {
this.originalDispatcher = originalDispatcher;
}
@Override
public Event dispatchEvent(Event event, EventDispatchChain tail) {
if (event instanceof MouseEvent) {
MouseEvent mouseEvent = (MouseEvent) event;
if (MouseButton.SECONDARY == mouseEvent.getButton()) {
mouseEvent.consume();
// Show our own menu
cmEdit.show(editView.getScene().getWindow(), mouseEvent.getScreenX(), mouseEvent.getScreenY());
}
}
return originalDispatcher.dispatchEvent(event, tail);
}
}
ここで、そのメニュー内からフォントを設定するには、双方向 Java<->javascript ブリッジが必要であり、webview 側でいくつかの javascript を使用します。