2011年03月01日

(続)やっぱり駄目だぁ!(EditTextのスクロール)

ダーッ!もう諦めました。
この問題、ひとつには操作上の問題とも言えるのかも知れません。
スクロールが完全に止まるのを待って、親指の腹でダブルタップすれば選択はできそうです。
しかし、自分のいつもの操作方法では非常にコツが必要になります。(決してAndroidの操作に慣れていない訳ではありません)

前回のエントリーで記載した方法は、別に改善されている訳ではなく、ただ単に正しく動くコードではなかった(というより動作していなかった?)模様です。
OnTouchListenerなどは組み込む必要がなかったことになります。
不思議なのはMotionEventをtoString()でログに出力してみると、タップした時点のXY座標は取れているのに対してSelectionStartとSelecionEndが一個前(スクロールを開始するために押下したポイント)のようなのです。
そのためか、タップの動きによってスクロール前の画面になったり、画面があちこちに飛ぶような動きになります。
(何も小細工をしない状態で)この動きはやっぱり変ではないでしょうか?

ちなみに、この問題改めて他のアプリで確認してみると、対応を放棄しているものが多いことに驚きます。
さりげなく素晴らしいAONO SOFTさんの「メモ帳」とか「JOTA TextEditor」などは、もちろんちゃんと素早いスクロールとカーソル位置を保持しつつ、表示がおかしくなることもないのですが、他のいくつか自分がインストールしているメモアプリで確認した限りではこの問題の非対応ケースは2種類に分かれます。

 1.ScrollViewを組み込んでいるが、タップした場所に思うようにカーソル位置が移動しない
 2.そもそもScrollViewを組み込んでいない

1番については僕のアプリと多少動作が違うような気がするものも(ひとつだけ)ありますが、やはりうまく飛ばなかったり、タップのたびにあちこちカーソルが飛ぶ動きをします。
自分としては、まだScrollViewを組み込まない方がバグっぽい動きをしないだけマシだと感じますが、その場合スクロールが劇的に遅いわけで、今となってはScrollViewはぜひ組み込みたいところ。
しかし、どうにも解決できそうにないので、これはもう諦めてこのまま公開するしかないのかな?と考え始めました。
非常に釈然とはしませんが……

と、ここで初めて該当すると思われる情報に行き当たりました。

http://q.hatena.ne.jp/1298127241

スクロールビューでイベントが処理されるとActivityのOnTouchEventが呼ばれないということだそうで、これが該当するのかな?
だとしたら、現状(おそらく将来も)手に余る内容になってしまいます。
やはり、どうやらこのまま公開するしかないようですね。ふぅ……

posted by 白虹 at 22:52| Comment(0) | TrackBack(0) | Android開発