现在的位置: 首页 > 综合 > 正文

android获取字符串的长度

2014年01月03日 ⁄ 综合 ⁄ 共 1448字 ⁄ 字号 评论关闭

需求是这样的:我想要动态的获取一个textview上文字的长度,因为我的文字有好多种语言,每种语言的长度不一样,导致显示的不是很好,我喜欢根据textview的长度动态设置。

1)最开始发现了这个,用了第二个办法,似乎不太准确。

http://blog.csdn.net/chuekup/article/details/7518239

后来根据同事的帮助,又尝试下面的方法,似乎还是不太对,待以后深究把。。。
  Paint mPaint = new Paint();
        mPaint.setTextSize(14);
        mPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.NORMAL));
        int ww = (int) mPaint.measureText(mFileNameEt.getText().toString(), 0, mFileNameEt
                .getText().length());
        System.out.println("ww = " + ww);

2)后来发现这个,似乎也不是很准确

http://tech.ddvip.com/2013-01/1358513327189188.html

3)最后发现了这个,很准确,最后用的是这种方法,自行参考:

http://blog.sina.com.cn/s/blog_54109a580101beiw.html

mFileNameHint = (TextView) view.findViewById(R.id.file_name_hint);
        TextPaint paint = mFileNameHint.getPaint();
        int width = (int) Layout.getDesiredWidth(mFileNameHint.getText().toString(), 0,
                mFileNameHint.getText().length(), paint);
        System.out.println("width = " + width + "  dip2px(this.getActivity(), 15); = "
                + dip2px(this.getActivity(), 15));

        mFileNameEt.setPadding(width + dip2px(this.getActivity(), 15), mFileNameEt.getPaddingTop(),
                mFileNameEt.getPaddingRight(),
                mFileNameEt.getPaddingBottom());

字符串显示时的宽度通过字符串的个数/长度是没有办法取得
因为涉及到字体,大小,全角/半角,
甚至英文字i和T的宽度也是截然不同的。
使用下面的方法, 可以取得字符串显示的宽度。
TextPaint paint = view.getPaint();
int width = Layout.getDesiredWidth(source, start, index, paint);
TextView view是显示字符串的TextView
CharSequence source 是字符串配列
int start是开始位置。
int index是字符个数 

参考:http://chen2337.blog.163.com/blog/static/34039920201173335056/

抱歉!评论已关闭.