2011-07-13 119 views
5

我有許多EditText控件和附近的複選框。默認情況下,大多數EditTexts已禁用。滾動時焦點會隨機跳躍

當我打開活動,一些隨機EditText控制獲取焦點(它周圍的框架),如果你在敲打,屏幕上的鍵盤出現即使EditText被禁止,當你按下上出現沒有文本屏幕鍵。

此外,我的整個佈局被包裹在ScrollView。當你滾動時,一些隨機EditText獲得焦點。它可以是最低的可見光,也可以是最高的可見光,或者有時在中間有一個,有時在可見光區之外。

由於佈局的隨機元素獲得焦點,所以打開它時隨機向下滾動該Activity,這非常煩人。

我想這是一個Android的錯誤,但有沒有解決方法?

Stop EditText from gaining focus at Activity startup處理情況只有1 EditText你可以告訴失去焦點,以便虛擬元素可以獲得它。在我的情況下,虛擬元素無法獲得焦點,無論是在onResume或onCreate,都android:focusable="true" android:focusableInTouchMode="true"

我應該檢查所有EditText控件(其中12個),並告訴他們失去焦點?滾動什麼,因爲它看起來隨機跳轉。

+0

剛剛嘗試在佈局中的每個EditText元素上調用clearFocus()和setSelected(false)。這沒有幫助。還有一些隨機的獲得焦點。 – iseeall

+0

經過一些測試發現,它並不總是隨機獲得焦點,而是EditText元素具有與觸摸點相同的y位置。您不必完全觸及元素本身,而是觸及其右側或左側,然後開始滾動。經過一段時間後,即使EditText被禁用(不可編輯),EditText仍有很高的獲得焦點的機會 – iseeall

回答

3

這不是滾動,隨機聚焦EditText。這是scrollview處理投擲事件的時候。如果您覆蓋投擲方法,則不會進行任何隨機焦點更改。

然後,如果你想要扔回功能,你需要編寫自己的扔方法。有代碼在這裏您可以複製從:

Smooth scrolling in Android

+0

非常感謝。將嘗試它。 – iseeall

+0

我面臨着同樣的焦點跳躍問題。但我無法覆蓋Android代碼中的平滑滾動。你能否給我一些更多的細節來解決這個問題。提前致謝。 – sathish

4

因爲在ScrollViewfling法的實施 - 它足以覆蓋findFocus(),這樣它會返回this 防止焦點滾動時跳來跳去。

@Override 
public View findFocus() { 
    return this; 
} 
+0

如何在不劃分ScrollView的情況下做到這一點? – SoloPilot

+0

不可能。你將不得不子類'ScrollView' – Skip

+0

子類化ScrollView不適用於我的問題。你能幫我嗎?我剛剛發佈我的問題在http://stackoverflow.com/questions/21240063/android-edittext-focus-jumps-to-another-inside-srollview – SoloPilot