2012-08-23 16 views
8

का उपयोग करते हुए कीबोर्ड मेरी सूची दृश्य स्वचालित रूप से समाप्त हो जाना चाहिए, जब नया संदेश प्राप्त हुआ या भेजा गया हो। लेकिन जब मैं एंड्रॉयड कीबोर्ड का उपयोग ListView, ListView आकार दिया और नया संदेश है, जो मैं भेजना चाहते हैं तो नीचे दिए गए EditText से संदेश भेजने के लिए, स्क्रीन के बाहर दिखाई देता है और मैं इसे देखना है, भले ही कुंजीपटल गायब हो जाता है और ListView फिर से आकार बदलता नीचे स्क्रॉल करना।ListView समाप्त होने के लिए स्क्रॉल नहीं करता है, जब

ListView स्क्रॉल करने के लिए मैं का उपयोग करें:

listView.postDelayed(new Runnable() {
@Override public void run() { listView.setSelection(listView.getCount()); } }, 100);

लेकिन मेरे मामले में सही ढंग से काम नहीं कर रहा है।

किसी को भी पता है क्यों यह हो सकता है? क्या कोई तरीका है, जो हमेशा सूची दृश्य को समाप्त करने के लिए स्क्रॉल करता है?

धन्यवाद, तुम्हारी मदद की बहुत सराहना कर रहा है!

+0

कैसे जब आप EditText के लिए जाना आप कीबोर्ड दिखा की घटना से मिली? –

उत्तर

8

आप आप अपनी सूची में चयन सेट करने के बाद कोड की इस पंक्ति को जोड़ने का प्रयास कर सकते हैं:

listView.smoothScrollToPosition(listView.getCount()); 

कोड परिणामस्वरूप इस तरह दिखना चाहिए:

listView.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      listView.setSelection(listView.getCount()); 
      listView.smoothScrollToPosition(listView.getCount()); 
     } 
    }, 100); 
+1

यह काम करता है! धन्यवाद! –

1

सेट एंड्रॉयड: adjustPan|adjustResize को गतिविधि के लिए प्रकट में windowSoftInputMode।

+2

यह काम नहीं कर रहा है। मैं गतिविधि को ठीक नहीं करना चाहता, क्योंकि मेरे पास स्क्रीन में एक और तत्व हैं, उदाहरण के लिए बाएं पैनल। यह समस्या केवल सूची दृश्य के लिए है। मैं विधि का उपयोग करना चाहता हूं, जो हमेशा सूची दृश्य को समाप्त करने के लिए स्क्रॉल करता है। –

+0

डॉक्स विशेष रूप से कहना है कि यह संभव नहीं है - http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_RESIZE – Eliezer

16

अपने कोड के इस इनसीड का प्रयास करें:

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 

(या इसे एक्सएमएल लेआउट द्वारा सेट करें)।

संबंधित मुद्दे