4

\n文字列テキストを測定して、折り返し用にを追加する必要があるかどうかを確認しています。

私はこのPaint.measureText関数を使用していますが、ほとんどの場合機能しますが、pxがdpと等しくないため、これは正確ではないことがわかります-ピクセルをdpに変換する方法をオンラインで見ましたが、代わりにたとえば、pxを画面サイズのパーセンテージに変換することをお勧めします

幅が8ピクセルの場合a、次のように言います。

float LetterWidthPercent = _______ //get width of character in percent of screen width
float LetterHeightPercent = _______ //get height of character in percent of screen height

このように私はちょうど見ることができました:

 if (LineOfTextWidth >= ScreenWidth * 0.9f) //90%

これは非常に便利な機能です。

4

3 に答える 3

1
public static double measureWeightPercent(Context context, String textToMeasure) {
    DisplayMetrics metrics = new DisplayMetrics();
    ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE))
            .getDefaultDisplay().getMetrics(metrics);

    TextView view = new TextView(context);
    view.setText(textToMeasure);
    view.measure(metrics.widthPixels, metrics.heightPixels);

    double textWidth = view.getMeasuredWidth();

    return textWidth / (metrics.widthPixels / 100);
}

画面にテキストを描画する前に (または代わりに) テキストを含む TextView を測定できます。このようにして、TextView の任意のフォントまたは textSize を設定し、テキストが画面上で何パーセントになるかを常に知ることができます。

于 2016-02-05T15:17:04.507 に答える
0

次のメソッドを使用して、do をピクセルに、ピクセルを dp に変換できます。

dp をピクセルに変換します。

public int dpToPixel(int dp) {
    DisplayMetrics dm= getContext().getResources().getDisplayMetrics();
    int pixel = Math.round(dp * (dm.xdpi / DisplayMetrics.DENSITY_DEFAULT));       
    return pixel
}

ピクセルを dp に変換します。

public int pixelToDp(int pixel) {
    DisplayMetrics dm = getContext().getResources().getDisplayMetrics();
    int dp = Math.round(pixel / (dm.xdpi / DisplayMetrics.DENSITY_DEFAULT));
    return dp;
}
于 2016-02-04T05:32:10.400 に答える