2009年2月22日日曜日

文字列の描画

最近自転車通勤になって通勤中にfeedチェックする時間がなくなり、uGReaderで未読がたまる状態になってます。未読がたまると、記事のタイトル一覧をざーーーーっとながめて、すべて既読にする事が多くなりました。adesで記事のタイトル表示は1行分なので、タイトルの内容が殆ど表示されない場合が結構あります。
そこで、表示行数を変えられるようにしようと考えたのですが、実際の表示行数を取得する方法が分かりませんでした。
.netだとMeasureStringを使って、文字列の表示サイズを取得する事ができるようですが、mobile用のcompact frameworkは部分的にしかサポートされていなくて、文字列を折り返して表示した場合のサイズを取得できません。結構基本的なことだと思うのですが、どうすればよいのでしょう?

今のところ固定行数を設定することしかできなくてver1.17にこっそり設定を追加してます。2行くらいの表示で、たいていの記事は内容が分かるので、まぁいいかなとも思ってます。(1行で収まる場合にも空白が表示されるのが嫌ですが)

設定ファイル(uGReader.xml)にItemHeightタグ内を2とかに書き換えると行数が変わります。タグが無い場合は、"画像無し"等の設定を変えると、タグを追加した設定ファイルが作成されます

2 件のコメント:

匿名 さんのコメント...

こんにちは。ZEROです。

1)タイトル文字列から表示するときの横幅を取得
2)画面の横幅と1)で取得した横幅を比較
3)2)の比較結果1行で収まる場合は文字の高さ+αを高さとし1行で表示。
4)2)の比較結果2行で収まる場合は(文字の高さ+α)*2を高さとし2行で表示。

2行表示でも収まらない場合はタイトルを2行表示とし、2行の最後で"..."と表示する
というのはいかがでしょうか?

ところで、要望があるのですが、私はTouchDiamondを利用しているのですが、uGreaderをタッチパネルに対応はできますでしょうか?
例えば、タッチして左から右にスライドさせるとカーソルキーの左が押されたと同じ動き、タッチして右から左にスライドさせるとカーソルキーの右が押されたと同じ動きにするような。。。
#MOUSE_PRESS,RELEASEイベントを拾ってPRESS時のポジション、RELEASE時のポジション比較でできるかもしれませんが。。。

もし、よろしければご検討していただけますと幸いです。

おとーぽん さんのコメント...

ZEROさんこんにちわ

これで2行表示いけそうですね。最後の"..."は、文字列のどこまでが表示可能な範囲か判別できないのでちょっと難しいですけど

タッチパネルの対応はリスト表示までは何とかなるかもしれないですが、記事表示中はwebBrowserコンポーネントにイベントを取られるので難しそうです