2012-08-23 3 views
8

새 List를 받거나 보내면 My ListView가 자동으로 끝까지 스크롤해야합니다. 그러나 안드로이드 키보드를 사용하여 ListView 아래의 EditText에서 메시지를 보내면 ListView의 크기가 조정되고 보내려는 새 메시지가 화면에 표시되지 않고 키보드가 사라지고 ListView의 크기가 다시 조정되는 경우에도 스크롤해야합니다. 키보드를 사용하면 ListView가 끝까지 스크롤되지 않습니다.

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

을하지만 내 경우에는 제대로 작동하지 않습니다 :

내가 사용 목록보기 스크롤합니다.

왜 그런지 알 수 있습니까? 항상 ListView를 끝까지 스크롤하는 방법이 있습니까?

감사합니다. 도움을 주시면 감사하겠습니다.

+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 인 매니 페스트에 android : windowSoftInputMode를 설정하십시오.

+2

작동하지 않습니다. 예를 들어 왼쪽 패널과 같이 화면에 다른 요소가 있기 때문에 활동을 수정하고 싶지 않습니다. 이 문제는 ListView 경우에만 발생합니다. 나는 항상 ListView를 끝내기 위해 스크롤하는 메서드를 사용하고 싶다. –

+0

문서에서 구체적으로 이것이 불가능하다고 말합니다. http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_RESIZE – Eliezer

16

코드의 INSEAD을 시도해보십시오

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 

(또는 XML 레이아웃으로 설정).

관련 문제