2013-08-22 27 views
8

我實現ClearableEdittext和它完美的作品除了在4.3當logcat的洪水我:ClearableEditText - requestLayout()不恰當地稱爲在Android 4.3

W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass 
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F....ID 0,0-708,88 #7f050127 app:id/SearchEdittext} during layout: running second layout pass 
W/View(16611): requestLayout() improperly called by com.[myPackage].ui.widgets.ClearableEditText{42233dd0 VFED..CL .F...... 0,0-708,88 #7f050127 app:id/SearchEdittext} during second layout pass: posting in next frame 

,並在EditText上打字的時候沒有文字顯示出來。此外,在開始淹沒logcat之後,除軟鍵盤之外,UI將變得凍結。

在internetz上找不到任何信息。並且requestLayout()必須在Edittext/Textview類中調用,因爲我從來不會調用它。 你們中的任何人都知道如何解決這個問題或導致錯誤的原因?

EDIT1好了,問題解決了,如果我註釋掉行:

setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], x, getCompoundDrawables()[3]); 

我想張貼這是一個可運行的視圖的UI隊列中,但沒有文字顯示出來。

EDIT2我看到一個Android開發者解釋的東西遞歸期間onLayout發生的this video,但再一次,我只是繼承EditText

EDIT3我也試圖丟棄該化合物可繪製並在EditText之上使用另一ImageView但它是與佈局通過借鑑了Edittext我相信的東西頂在...遞歸調用仍在發生,並阻止用戶界面。不知道接下來要做什麼... 4.3 sux

EDIT4我最終使用了一個水平方向的線性佈局和組件背景的自定義9補丁drawables。在佈局中,我使用自定義的9patch Bg生成普通的edittext,然後使用另一個自定義的9patch Bg生成ImageButton。

事情是這樣的:

enter image description here

紅線劃定從的ImageButton的EDITTEXT。它現在可以在4.3

回答

1

稍遲一點的回覆,但我剛剛與ClearableEditText組件有關的問題。

看來,由於setClearIconVisible()中的複合drawdraws的變化,onfocus事件的一個永恆循環被觸發。

我改變了setClearIconVisible只改變drawable如果有任何真正的變化。

protected void setClearIconVisible(boolean visible) { 
     boolean wasVisible = getCompoundDrawables()[2] != null; 
     if(wasVisible == visible) return; 

     setCompoundDrawables(oldDrawables[0], oldDrawables[1], x, oldDrawables[3]); 
     setCompoundDrawablePadding(oldPadding); 
    } 

這解決了我的問題,鍵盤不再出現。聚焦事件的永恆循環對任何人都沒有好處。它仍然增加了另一輪佈局和焦點改變,所以可能有更聰明的解決方案。我很好,多一輪,壽。

我也向開發者發送了一個拉請求,https://github.com/yanchenko/droidparts/pull/31

1

嘗試清除方法onFocusChange。它對我有幫助

+0

可能工作,只有按鈕將始終顯示後文本已被輸入。嗯,我想我們可以在onFocusChange for 4.3版本中放置一個if子句。也許隨着時間的推移,這將在Android端得到修復 – androidu

1

我結束了爲edittextclear btn使用了2個單獨的視圖,請參閱我編輯的問題。

相關問題