如何计算TextView的字符数限制?

时间:2019-12-02 06:54:18

标签: android android-layout textview android-edittext

我想计算一个TextView可以容纳的字符总数,其文本大小为14dp,宽度为100dp,高度为100dp。然后我必须将这些字符的限制添加到EditText中。

 <TextView
                android:id="@+id/OFSO_text1"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_weight="1"
                android:layout_gravity="top|center"
                android:fontFamily="@font/lato_bold"
                android:gravity="center|bottom"
                android:text="SEASONAL DISCOUNT ARE HERE"
                android:textAlignment="center"
                android:textAllCaps="true"
                android:textColor="@color/lightcream"
                android:textSize="14dp"
                android:textStyle="normal"
                android:autoSizeTextType="none"
               />

我已经尝试过此代码,但是无法正常工作。这给了我更多的char限制,而Textview可以容纳。

            TextPaint paint = textView.getPaint();
            int wordwidth=(int)paint.measureText("a",0,1);
            int screenwidth = getResources().getDisplayMetrics().widthPixels;
            int  maxLength = screenwidth/wordwidth;

请帮帮我!!提前致谢。 编码愉快!

4 个答案:

答案 0 :(得分:0)

测量中缺少字体大小和字体。

        // In case you are storing your font in res/font
        Typeface typeface = ResourcesCompat.getFont(context, R.font.noto_sans_regular);
        paint.setTypeface = typeface
        paint.setTextSize = sizeOfYourFontInPixels

答案 1 :(得分:0)

首先,您的文本持有人大小因设备而异, 而且,您可以做类似的事情,

@GET("Master/GetConsignerPartyList?prefix={claimId}")
    Observable<ConsignerPartyResponse> consignerPartyReq(@HeaderMap Map<String, String> headers, @Path("claimId") String search);

答案 2 :(得分:0)

测量文字:您可以执行以下操作:

float textWidth = textView.getPaint().measureText(textView.getText().toString());

if(textView.getMeasureWidth() == n) {

Log.i("Text_count",textView.getText().toString().lenght());

}

if(textWidth == n) {
Log.i("Text_count",textView.getText().toString().lenght());
}

答案 3 :(得分:0)

尝试一下

  1. 在编辑文本中添加addTextChangedListener以读取字符。
  2. 在覆盖方法beforeTextChangedonTextChangedafterTextChanged中,读取类似下面的字符

    int length = etText.length();
    int leftCharacters = 500 - length; //let default length of edittext is 500
    

希望,它对您有用!