0

そのため、特定の理由から、String(TextView に配置された) サイズ (ピクセル単位) がデバイスの幅のサイズ (ピクセル単位) を超えないようにする必要があります。私が使用する画面の幅を取得するには:

    final float scale = context.getResources().getDisplayMetrics().density;
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    try{
        Point size = new Point();
        display.getSize(size);
        screenWidth = size.x;
    }catch(NoSuchMethodError e){
        screenWidth = display.getWidth();
    }
    screenWidth = screenWidth - ((int) (10 * scale + 0.5f)); //takes into account a 10dp margin

そして、私が使用する文字列の長さを取得するには:

paint.measureText(string);

string はStringオブジェクトで、paint はPaintオブジェクトです。私が直面している問題は、画面の長さがはるかに長い場合でも、画面の長さよりも小さいmeasureTextとメソッドが言っていることです。String私は何かを見落としましたか?これを行うためのより良いアプローチはありますか? ヘルプ、提案、アドバイスをいただければ幸いです。ありがとう!

4

2 に答える 2

0

私の問題に対する答えは、私が提供したコードでは簡単に理解できるものではありませんでした。私が提供したコードは正しかったからです。問題はPaint、次のようにオブジェクトを作成したことです。

Paint paint = new Paint();

そして、measureText(string)メソッドを参照しました。これの問題は、このサブクラスに指定したテキスト サイズが考慮されていないことですTextView。したがって、この問題を解決するには、上記のコードを次のように変更するだけで済みました。

Paint paint = this.getPaint();
于 2013-04-15T18:52:01.967 に答える
0

私は一般的に使用しました:

 paint.getTextBounds

このタイプの状況では、非常に正確であることがわかりました。

onSizeChangedまた、のカスタム バージョンでオーバーライドするとTextView(他のすべては同じままにする)、必要なときにビューのサイズを直接修正できることもわかりました。

于 2013-04-15T18:57:04.720 に答える