1

Viewキャンバスの下部に固定したい頻繁に更新されるテキストを含むカスタムに取り組んでいます。

テキストの長さも変更されます。行が必要になると画面を上に移動して、折り返したいと思います。(DynamicLayoutしたがって、これを自動化するための確かな選択のようです)

ただし、キャンバス上のどこにテキストを描画するか、またはテキストを「成長」させる方向を指定することについてのオプションは、ドキュメントに表示されません。

これが私の初期化です:

TextPaint subtleTextPaint = new TextPaint();
DynamicLayout dl = new DynamicLayout(text,subtleTextPaint,getWidth()
    ,Layout.Alignment.ALIGN_CENTER,1,0,true);

そして、onDraw()では、次のようにキャンバスをDynamicLayoutオブジェクトに渡すだけです。

dl.draw(c);

現在、テキストは画面の最上部に描画され、テキストが長くなるにつれて単語が下に折り返されます。

4

2 に答える 2

1

かなりの検索の結果、私が望むことを実行するものは何も見つかりませんでした。そこで、真のハッカースタイルで、独自のソリューションを作成しました。DynamicLayoutクラスを拡張してgetLineTop()関数を上書きすることで、探していた機能を実現することができました。

ここにソースコードを投稿しました。

于 2013-02-05T08:38:34.997 に答える
0

私が思うに、最初に画面の幅を取得し、次に機能する画面の寸法に応じてXyでテキストを設定します。スニペットは次のとおりです。

 width=canvas.getWidth();

        if(width==720)
        {
            canvas.drawText(String, x , y, drawText);
        }
        else if(width==480)
        {
            canvas.drawText(String, x , (y, drawText);
        }
        else 
        {
            canvas.drawText(String, x , (y, drawText);
        }
于 2013-02-01T11:47:00.180 に答える