日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

android如何獲取textview最多顯示

瀏覽:81日期:2022-09-18 11:50:19
方法一

工作中用的一個方法,雖然不算特別準確,但效果還是不錯的,這里分享下。

/** * 獲取textview最大能顯示幾個字 * @param text 文本內容 * @param size 文本字體大小 * @param maxWidth textview的最大寬度 * @return */ private float getLineMaxNumber(String text, float size,float maxWidth) {if (null == text || ''.equals(text)){ return 0;}Paint paint = new Paint();paint.setTextSize(size);//得到文本內容總體長度float textWidth = paint.measureText(text);// textWidthfloat width = textWidth / text.length();float total = maxWidth / width;return total; }

上面這個方法不太精確,不過比較適合在 RecyclerView 或 ListView 里面使用,避免生成太多對象

方法二

/** * 獲取textview一行最大能顯示幾個字(需要在TextView測量完成之后) * * @param text 文本內容 * @param paint textview.getPaint() * @param maxWidth textview.getMaxWidth()/或者是指定的數值,如200dp */ private int getLineMaxNumber(String text, TextPaint paint, int maxWidth) {if (null == text || ''.equals(text)) { return 0;}StaticLayout staticLayout = new StaticLayout(text, paint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0, false);//獲取第一行最后顯示的字符下標return staticLayout.getLineEnd(0); }

利用 StaticLayout 可以非常輕松的得到一行可以顯示的最大字符數

延伸:對于一個單行 TextView,當字符串超出一行時,如何獲取未顯示的部分字符串?textview 設定最大行數為 1 后,文本超出了 textview,textView 末尾顯示省略號,我就想知道省略號代表的內容思路:假設 TextView 的寬度是在 xml 內設置的具體數值,比如 300dp,(目的是為了簡化這個問題,如果設置為 match_parent 或者 wrap_content,需要在程序運行時計算其寬度,而直接 getWidth 總是返回 0,比較麻煩。)比如是這樣配置的:

<TextViewandroid: android:layout_width='300dp'android:layout_height='wrap_content'android:ellipsize='end'android:singleLine='true' />

然后填充了一個超長的字符串,比如這樣:

String str = 'If you really want to hear about it, the first thing you’ll probably want to know';這樣就會導致顯示不全,像這樣:If you really want to hear about it, the first thin...所以,如果你想得到已顯示的字符個數,或者未顯示的字符個數,那么其中的關鍵是如何計算每一個字符的寬度。然后遍歷這個字符串,當前n個字符寬度總和,超過TextView寬度時,就得到了已顯示的字符個數。String str = 'If you really want to hear about it, the first thing you’ll probably want to know';mTextView = (TextView) findViewById(R.id.textView);// 計算TextView寬度:xml中定義的寬度300dp,轉換成pxfloat textViewWidth = convertDpToPixel(300);float dotWidth = getCharWidth(mTextView, ’.’);Log.d(TAG, 'TextView width ' + textViewWidth);int sumWidth = 0;for (int index=0; index<str.length(); index++) { // 計算每一個字符的寬度 char c = str.charAt(index); float charWidth = getCharWidth(mTextView, c); sumWidth += charWidth; Log.d(TAG, '#' + index + ': ' + c + ', width=' + charWidth + ', sum=' + sumWidth);if (sumWidth + dotWidth*3 >= textViewWidth) {Log.d(TAG, 'TextView shows #' + index + ' char: ' + str.substring(0, index));break; }}// Dp轉Pxprivate float convertDpToPixel(float dp){ Resources resources = getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float px = dp * (metrics.densityDpi / 160f); return px;}// 計算每一個字符的寬度public float getCharWidth(TextView textView, char c) { textView.setText(String.valueOf(c)); textView.measure(0, 0); return textView.getMeasuredWidth();}

結果如下,在榮耀 3C 和 LG G3 上測試通過(G3 比計算的結果,多顯示了一個字符):

10-22 01:17:42.046: D/Text(21495): TextView width 600.010-22 01:17:42.048: D/Text(21495): #0: I, width=8.0, sum=810-22 01:17:42.049: D/Text(21495): #1: f, width=9.0, sum=1710-22 01:17:42.049: D/Text(21495): #2: , width=7.0, sum=2410-22 01:17:42.049: D/Text(21495): #3: y, width=14.0, sum=38......10-22 01:17:42.053: D/Text(21495): #17: t, width=9.0, sum=21310-22 01:17:42.053: D/Text(21495): #18: , width=7.0, sum=22010-22 01:17:42.053: D/Text(21495): #19: t, width=9.0, sum=229......

10-22 01:17:42.061: D/Text(21495): #50: n, width=16.0, sum=57510-22 01:17:42.061: D/Text(21495): #51: g, width=16.0, sum=59110-22 01:17:42.061: D/Text(21495): TextView shows #51 char: If you really want to hear about it, the first thin

到此這篇關于android獲取textview最多顯示的文章就介紹到這了,更多相關android textview最多顯示內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品成人图区| 国产亚洲电影| 国产精品13p| 日韩av自拍| 久久精品影视| 免费看的黄色欧美网站| 中文字幕av亚洲精品一部二部| 日韩有吗在线观看| 国产极品模特精品一二 | 一二三区精品| 久久国产精品久久久久久电车| 一区二区91| 国产精品一区二区三区美女| 精品国产亚洲一区二区三区在线| 99精品在线免费在线观看| 久久亚洲国产精品一区二区| 日本成人在线不卡视频| 久久永久免费| 女人av一区| 日本一区中文字幕| 亚洲国产欧美日本视频| 亚洲欧美日韩国产一区二区| 国产精品三p一区二区| 欧美日韩尤物久久| 亚洲开心激情| 精品三级在线观看视频| 美女网站一区| 国产九一精品| 九一精品国产| 国产亚洲观看| 黄色亚洲精品| 国产精品一区亚洲| 免费av一区| 国产亚洲人成a在线v网站| 高清av不卡| 亚洲精品一区二区在线播放∴| 国产精品久久| 红桃视频国产一区| 久久精品国产亚洲一区二区三区| 久久影视一区| 国产精品自在| 欧美日韩三区| 国产一区二区三区四区五区| 一区二区精品| 久久中文亚洲字幕| 精品无人区麻豆乱码久久久 | 激情黄产视频在线免费观看| 免费日韩精品中文字幕视频在线| 精品不卡一区| 日韩不卡一区二区三区| 精品一区免费| 欧美好骚综合网| 日韩成人av影视| 欧美 日韩 国产一区二区在线视频 | 欧美日韩18| 国户精品久久久久久久久久久不卡| 国产探花在线精品| 亚洲综合三区| 久久久久久黄| 国产福利资源一区| 一区二区三区国产盗摄| 国产专区一区| 黄色网一区二区| 日韩精品导航| 日韩中文字幕不卡| 欧美成人国产| 中文av在线全新| 国产精品免费不| 中文字幕日本一区| 每日更新成人在线视频| 亚洲二区免费| 快播电影网址老女人久久| 久久精品毛片| 国产精品99精品一区二区三区∴ | 国产高清日韩| 日韩av影院| 日韩超碰人人爽人人做人人添| 天使萌一区二区三区免费观看| 久久婷婷亚洲| 日韩毛片视频| 黑森林国产精品av| 国产精品13p| 国产精品毛片久久| 国产成人调教视频在线观看| 国产剧情一区| 国产精品99精品一区二区三区∴ | 蜜臀va亚洲va欧美va天堂 | 日韩美女一区二区三区在线观看| 久久69成人| 精品伊人久久| 精品三级在线| 国产伦久视频在线观看| 国产福利电影在线播放| av免费不卡国产观看| 精品国产第一福利网站| 亚洲美女久久精品| 欧美日韩一区二区三区视频播放| 久久久久久久久丰满| 激情自拍一区| 午夜久久一区| 久久av在线| 日本不卡在线视频| 国产精品xxx在线观看| 国产精品99一区二区三区| 欧美成人a交片免费看| 久久精品电影| 在线国产一区二区| 日韩中文字幕麻豆| 日韩久久99| 精品网站999| 亚洲a一区二区三区| 好吊日精品视频| 综合激情视频| 国产乱码精品一区二区亚洲| 久久gogo国模啪啪裸体| 精品视频91| 久久久久久久久久久妇女| 在线国产一区二区| 日本亚洲视频在线| 久久亚洲精品中文字幕| 欧美二三四区| 麻豆精品91| 国产精品日韩精品在线播放| 成人片免费看| 免费观看在线综合色| 国产精品久久乐| 蜜桃精品在线| 蜜臀久久99精品久久久久宅男 | 三级小说欧洲区亚洲区| 99riav国产精品| 日韩av网站在线观看| 成人在线视频免费| 在线亚洲一区| 国产精品久久久久久久久免费高清 | 久久久精品网| 亚洲免费资源| 国产成人精品亚洲线观看| 久久精品国产www456c0m| 蜜臀久久99精品久久久久宅男| 免费在线亚洲| 欧美日韩国产免费观看| 欧美亚洲一区二区三区| 日本不良网站在线观看| 免费人成网站在线观看欧美高清| 国产福利亚洲| av不卡在线| 国产一区精品福利| 久久亚洲图片| 国产激情在线播放| 四虎在线精品| 群体交乱之放荡娇妻一区二区| 日本一区二区三区中文字幕| 福利在线免费视频| 亚洲另类黄色| 久久天堂精品| 麻豆中文一区二区| 美女日韩在线中文字幕| 国产一区二区三区四区二区 | 蘑菇福利视频一区播放| 国产在线一区不卡| 日韩一区二区三区免费视频| 日韩中文影院| 久久a爱视频| 亚洲欧美网站在线观看| 国产91久久精品一区二区| 国产美女久久| 日韩午夜在线| 成人三级高清视频在线看| 日韩精品一区二区三区中文字幕| 日韩网站中文字幕| 国产视频一区二| 综合亚洲自拍| 欧美精品黄色| 日韩精品永久网址| 国产日韩欧美三级| 欧美一区=区| 久久一区二区三区电影| 成人污污视频| 国产精品一区二区三区四区在线观看 | 国产综合婷婷| 中文在线资源| 久久影院资源站| 欧美日本久久| 日韩激情网站| 亚洲精品国模| 99综合视频| 午夜国产精品视频| 欧美色图国产精品| 日韩av二区| 久久精品亚洲| 国产亚洲一区| 国产亚洲欧美日韩精品一区二区三区 | 日韩极品在线观看| 男人的天堂久久精品| 视频一区中文| 亚洲免费播放| 99在线精品视频在线观看| 激情综合自拍| 欧美成人亚洲| 国产韩日影视精品|