2017-04-18 80 views
11

我在每個單元格中都有一個ListviewEditTexts。每當我將文字添加到EditText增長1行時,ListView就會滾動到頂部(並且通常會從視圖中移除EditText)。ListView在EditText增長時滾動到頂部

我發現了一些關於這個問題,但他們似乎只有「黑客」作爲答案,沒有什麼適合我。

ListView scrolls to top when typing in multi-line EditText

Listview with edittext - auto scroll on "next"

編輯: 了大量的研究後,我發現,這是因爲EDITTEXT是在調整,導致ListView控件佈局其子視圖,然後重置到頂部。我想找到一種方法讓EditText在同一個地方同時增長。

我想這是因爲一個建議,我在網上找到的,但是,即使它保持在ListView合適的高度,它會清除從EditText的焦點,我似乎無法得到它帶回requestFocus

private Stirng getTextWatcher(){ 
return new TextWatcher(){ 
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
@Override public void onTextChanged(CharSequence s, int start, int before, int count) { } 
@Override public void afterTextChanged(Editable s) { 
listView.setSelection(index); 
    } 
} 
} 

所以,我需要的是兩種:

  1. 擁有的ListView爲不自動頂端時,子視圖被再次奠定了或滾動

  2. 一個辦法在調用ListView.setSelected()或3之後,我可以將我的EditText聚焦。有另一種方法可以滾動ListView,它不會清除EditText的焦點。

有關選項

  • 我試圖scrollTo()smoothScrollToPosition()scrollTo由於某種原因有效,但隱藏了ListView中的某些項目(它們變得不可見,未加載)。並且smoothScrollToPosition()創建一個動畫,其中ListView跳轉到頂部,然後它將用戶帶回該項目(並且執行2到3次)。
  • +0

    您可以發佈您的代碼?爲什麼這些答案不適合你? – legendof

    +0

    @legendof發佈我的代碼是什麼?列表視圖?這對我來說似乎很標準。沒什麼特別的。除了填充它之外,我不會在Java中做任何事情,只需在XML中完成。 我的意思是,所有這些都是黑客,我想要一些優雅高效的東西......不像每次添加信件時都滾動列表視圖 – NickProvost

    +0

    您能向我們展示XML佈局嗎?列表視圖的代碼,以及它的父母。它是否有機會進入ScrollView? –

    回答

    4

    與參數我的看法,如果你想使用EditText,那麼你應該在的地方EdiText並通過TextView你應該打開並輸入點擊對話框使用TextViewEditText是更簡單,很好地解決了採取從ListView項目輸入。處理EditText重點在ListView是各種各樣的困難,你需要爲此額外Listeners

    OR

    如果你已經在你的UI限制輸入框的數量/ UX,那麼你可以通過使用ScrollViews實現EditTextCustomListView

    +0

    我剛測試過你的方法。第二個完美地爲我工作。 我所做的是在滾動視圖中使用線性佈局,並在java中以編程方式插入我的視圖。它工作的很好,滾動視圖停留在edittext增長的位置。謝謝。 – NickProvost

    0

    的ListView滾動到頂部時的EditText增長

    ListView具有與子焦點某些已知限制。

    解決方案

    你爲什麼不嘗試使用RecyclerView代替ListView? Google推出RecyclerView作爲此類用戶界面的默認推薦方式。所以自定義ListView或黑客礦石不再需要。

    0

    你可以嘗試添加該屬性您ListView

    android:transcriptMode="normal" 
    

    這使得當接收到一個數據集更改通知和僅在最後一個項目是在屏幕上已經可見列表會自動滾動至底部。

    在這裏閱讀更多:attr_android:transcriptMode | Android Developers

    +0

    我試過這個。絕對不行 – NickProvost