1. 程式人生 > >Android 錯誤 :TextView中屬性ellipsize的 值為start、middle可能會出現錯誤

Android 錯誤 :TextView中屬性ellipsize的 值為start、middle可能會出現錯誤

錯誤摘要如下:

Java.lang.ArrayIndexOutOfBoundsException: length=*; index=-1

at android.text.StaticLayout.calculateEllipsis(StaticLayout.java:*)
at android.text.StaticLayout.out(StaticLayout.java:*)
at android.text.StaticLayout.generate(StaticLayout.java:*)
at android.text.StaticLayout.<init>(StaticLayout.java:*
)

at android.widget.TextView.makeSingleLayout(TextView.java:*)

at android.widget.TextView.makeNewLayout(TextView.java:*)

*為行數不一定。 反正是陣列越界,本來以為是自己的程式碼問題,來回,反覆測試,Debug發現不是自己程式碼錯誤,是TextView的bug。

當TextView 屬性ellipsize的值設為start、middle的時候可能會出現這種錯誤。

解決方法:

如果TextView的值太長一定要省略,省略尾部可以避免這個問題,即ellipsize的值設為end。

或者(下面這個方法未嘗試,可以自行嘗試一下):

摘自:stackoverflow

They should have at least added this to Lint! :S You can use a custom textview to fix this.(你可以使用一個自定義的TextView去修復這個bug)

public class MyTextView extends TextView {
    public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyTextView(Context context) {
        super(context);
        init();
    }

    private void init() {

        // this is to overcome the calculateEllipsis bug in some versions of android, I spotted it on 4.4.4 and 4.4.3
        // see https://code.google.com/p/android/issues/detail?id=33868

        if (Build.VERSION.SDK_INT >= 16) {
            if (getMaxLines() == 1) {
                setSingleLine(true);
            }
        }
    }
}

reference MyTextView in your xml instead of the normal textview.(在你的xml檔案中引用MyTextView替換一般的TextView)

有梯子的可以通過下面這個連結看Bug報告:

相關推薦

Android 錯誤 TextView屬性ellipsizestartmiddle可能出現錯誤

錯誤摘要如下: Java.lang.ArrayIndexOutOfBoundsException: length=*; index=-1 at android.text.StaticLayout.c

maven打包編譯的錯誤sun.misc.BASE64Decoder是Sun的專用API,可能在未來版本刪除

今天遇到 sun.misc.BASE64Decoder是Sun的專用API,可能會在未來版本中刪除 的錯誤 算是maven的一個bug吧。 maven-compiler-plugin 2.3.2 釋出

maven 打包編譯的錯誤 sun.misc.BASE64Decoder 是 Sun 的專用 API,可能在未來版本刪除

使用 mvn clean package 報錯如下 ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /sc

使用WebElements定位多個相似的元素,比如頁面存在五個單選按鈕,他們有相同的class屬性myRadio,我們想對五個按鈕迴圈操作,我們可以把它們全部取出來放到集合,然後做迴圈操作

webdriver提供了豐富的API,有多種定位策略:id,name,css選擇器,xpath等,其中css選擇器定位元素效率相比xpath要高些,使用id,name屬性定位元素是最可靠,效率最高的一種辦法。   1、工具選擇:在我們開發測試指令碼的過程中各個瀏覽器給

Android開發 Eclipse匯入專案前有紅叉提示但是專案檔案內容無錯誤的解決方法

 Eclipse中,Android專案名稱前有紅叉,但專案內所有檔案都無錯誤,通常發生在匯入專案時。 先可以去看一下幾個視窗的輸出內容,不同的錯誤日誌要採用不同的方法,要靈活使用各種方法! 1>選單路徑----Window/Show View/Console 2

記錄定時任務的一個錯誤crontab 使用"%"的問題

unless roo 記錄 翻譯 int 使用 tab 單獨 結束 最近工作需要,需要定時執行命令文件,並且把執行的日誌重定向輸出到以日期命名的文件中,命令如下: /bin/bash /data/shell/merge.sh &>> /data/shel

資料結構 筆記屬性操作的實現

樹中結點的數目 -定義功能:count(node) ·在node為根結點的樹中統計結點的數目 int count(GTreeNode<T>* node) const { int ret = 0; if(node != NULL)

快速判斷一個32位的字是否存在"0"的byte

http://www.spongeliu.com/421.html p { margin-bottom: 0.25cm; line-height: 120% } a:link { }   首先為什麼要做這樣的判斷呢? 當你要strcpy活著strcmp或者hash一個字串的時候,傳統的方法是

CSS屬性和單位

CSS中值的單位 1.顏色值 被各種瀏覽器支援,並且作為 CSS 規範推薦的顏色名稱只有 16 種,如下表所示。   百分比表示 color: rgb(100%, 100%, 100%); 這個宣告將紅、藍、綠 3 種原色都設定為最大值,結果組合顯示為白色。相反,可以設定r

Android WidgetTextView

TextView使用詳解 TextView有眾多屬性和子類,家大業大,人丁興旺,有必要了解清楚 TextView的出身 java.lang.Object  ↳ android.view.View   ↳ android,widget.TextView TextView

讀取properties配置檔案屬性的工具類

自制讀取properties配置檔案的工具類 專案中常用的一些配置的維護,例如redis的ip,資料庫ip這些一點是用檔案維護起來,方便專案開發時進行除錯,為了方便以後使用,就直接封裝了一個工具類以便使用,程式碼如下: /** * 讀取properties配置檔案中屬性的值的工

錯誤程式有遊離的‘\343’ ‘\200’等

今天在做編譯原理的習題時,在寫程式過程中,出現瞭如下錯誤: 原因: 這一般是符號使用錯誤引起的,有時甚至是空格。 解決辦法: 找出錯誤,然後加以改正。 可以使用 linux 下的 od 命令加上重定向。(od命令 使用者通常使用od命令檢視特殊格式的檔案內容。通

C++的賦函式

先來看一個例子: 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 class Student{ 5 public: 6 Student(){ 7

c編譯時的錯誤程式有遊離的‘\240’‘\302’‘\XXX 時解決方案

偶爾從網上看到不錯的原始碼,想研究下,不幸編譯時遇到 “錯誤:程式中有遊離的‘\240’‘\302’”之類的錯誤, 大量的原始碼不可能再全部重敲一遍,經過一番研究,終於讓我找到簡單的解決方案,還是本著讓後人少走彎路的想法,分享下: 首先,編譯器提示的\xxx,都是8進位制的編

資料結構開發(21)屬性操作與層次遍歷

0.目錄 1.樹中屬性操作的實現 2.樹形結構的層次遍歷 3.小結 1.樹中屬性操作的實現 樹中結點的數目: 定義功能:count(node) 在 node 為根結點的樹中統計結點數目 樹結點數目的計算示例: count(A) = count(B)

數據結構開發(21)屬性操作與層次遍歷

思路 img emp 遍歷 ios 需求 next() abcd reat 0.目錄 1.樹中屬性操作的實現 2.樹形結構的層次遍歷 3.小結 1.樹中屬性操作的實現 樹中結點的數目: 定義功能:count(node) 在 node 為根結點的樹中統計結點數目 樹

Jmeter+Ant執行build.xml常見錯誤前言不允許有內容

build.html<?xml version="1.0" encoding="UTF-8"?><project name="ant-jmeter-test" default="run" basedir='.'>       <tstamp>

android學習TextView 跑馬燈的實現

最近無意間看到了涉及到跑馬燈效果的程式碼,於是在網上查閱了很多資料,在這裡對自己看的一些文章進行一下總結,順便加上自己的一些體會。 讓我們一步步逐漸向下。 首先我們要實現走馬燈這樣一個效果,通常來說都是在TextView這個控制元件中來實現的,而且其中的文

spring引入properties檔案,並在controller等層獲得引入檔案屬性

引入配置檔案方法一: 用context:property-placeholder引入配置檔案 <!-- 配置由spring讀取jdbc的屬性檔案 --> <context:property-placeholder location="classpath:

android 自定義TextViewHtml超連結點選事件詳解

public class TextHtmlActivity extends Activity { private TextView text; private Activity mActivty; @Override protected vo