2013-05-11 1 views
5

필자는 필자가 입력 한 제안을 보여주기 위해 필자가 webservice에 링크 한 autocompletetextview를 가지고 있습니다. 이제 사용자가 자동 ​​완성 드롭 다운을 스크롤하기 시작할 때 소프트 키보드를 숨길 수 있습니까? 나는 그물을 들여다 보았지만 자동 완성 드롭 다운을 감지하는 방법을 찾지 못했습니다.안드로이드에서 autocompletetextview의 드롭 다운에서 스크롤 할 때 키보드를 닫으십시오.

+0

http://developer.android.com/reference/android/view/inputmethod /InputMethodManager.html & http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#hideSoftInputFromWindow%28android.os.IBinder,%20int%29 – Sam

답변

0

정확하게 이해하면 드롭 다운 목록에 더 많은 공간이 남기 때문에 키보드가 사라 지길 원하십니까? 아마도이 관련이되어 사용자가 목록을 스크롤하고 사용자가 다시 텍스트 뷰에 닿을 경우, 다시 키보드를 보여주는 시작할 때 나는이를 위해 올 수

Scrolling drop-down-menu over the keyboard in autocompletetextview

5

가장 좋은 방법은, 키보드를 숨어있다. 이것은 dropDownHeight의 높이를 설정하는 것과 같이 볼 수있는 다른 솔루션과 달리 대부분의 OS 버전 및 장치에서 작동합니다.

다음은 사용자가 스크롤을 시작할 때 키보드를 숨기는 샘플 코드입니다. 기본적으로 AutoCompleteTextView의 어댑터에 터치 리스너를 만들어야합니다.

public View getView(final int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    ViewHolder holder; 
    if (convertView == null) { 
     convertView = inflater.inflate(viewResourceId, parent, false); 
     holder = new ViewHolder(); 
     init(convertView, holder); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    convertView.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       InputMethodManager imm = (InputMethodManager) getContext() 
         .getSystemService(
           Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(
         searchView.getWindowToken(), 0); 
      } 

      return false; 
     } 
    }); 

    setView(position, holder); 
    return convertView; 
} 
+0

brilliant !!!!! – Netero

0

XML에이 라인을 추가하면이 스크롤 목록 뒤에 키보드를 만들 것입니다 나를

에 잘 작동합니다.

android:dropDownHeight="wrap_content" 
2

나는이 대답을하거나, 허용 대답으로 @의 ayorhan의 대답 것, 정말 드롭 다운 선택을 스크롤 할 때 키보드를 기각 처리하는 가장 좋은 방법입니다.

SimpleCursorAdapter와 함께 사용하기 위해 @ ayorhan의 해결책을 모르는 게임입니다.

public class SimpCursAdap extends SimpleCursorAdapter { 

public SimpCursAdap(Context context, int layout, Cursor c, String[] from, int[] to, int flags) { 
    super(context, layout, c, from, to, flags); 

} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position, convertView, parent); 
    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
       InputMethodManager imm = (InputMethodManager) getContext() 
         .getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(
         view.getApplicationWindowToken(), 0); 
      } 
      return false; 
     } 
    }); 
    return view; 
    } 
} 

이 그럼 당신은 어디서나 클래스를 인스턴스화 할 수 있습니다 : 나는 정의 SimpleCursorAdapter 클래스를했습니다

final SimpleCursorAdapter adapter = new SimpCursAdap(aContext, 
      aRowLayout, 
      null, 
      aColNames, 
      aRowViewsIds, 
      0); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
adapter.setStringConversionColumn(aValueColId); 
autocompletetextview.setAdapter(adapter); 
u는 사용할 수
관련 문제