2011-09-22 77 views
1

我正在嘗試創建聊天窗口。 在屏幕上方的ScrollView中包含了一個TextView;和屏幕底部的EditText。 我使用以下代碼在新消息不在視圖中時自動滾動滾動視圖。ScrollView在滾動時竊取焦點

scroll.post(new Runnable(){ 
@Override 
public void run() { 
     scroll.fullScroll(View.FOCUS_DOWN); 
} 
}); 

令人討厭的是當ScrollView滾動時,它從EditText中竊取我的焦點。 ScrollView滾動時,我無法輸入消息。 任何人都可以給我一些亮光?非常感謝:)

回答

1

我知道一個解決方法。調用requestFocus在應該保持焦點的視圖上。

這將是很高興知道你是否以更好的方式解決它。

0

我解決這個問題的方式不是理想的,但它是一種從我的測試中運行得很好的黑客。

基本上它會失去焦點到ScrollView馬上,所以我用了一個Runnable和postDelayed設置爲200ms。

emailEt.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if(hasFocus){ 
      Toast.makeText(getActivity(), "got the focus", Toast.LENGTH_LONG).show(); 
      scrollView.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        scrollView.fullScroll(ScrollView.FOCUS_DOWN); 
       } 
      }, 200); 
     }else { 
      Toast.makeText(getActivity(), "lost the focus", Toast.LENGTH_LONG).show(); 
     } 
    } 
});