2012-02-20 2 views
1

나는 상단에 메뉴가있는 gridview를 표시하는 간단한 응용 프로그램을 만들고 있습니다. 클릭 할 때 메뉴 버튼 중 하나가 바로 아래에보기에 검색 바를 배치합니다. 그런 다음 사용자는 슬라이더를 이동하여 gridview의 항목 크기를 변경할 수 있습니다. 나는 그 부분을 잘 처리 할 수있다, 문제는 seekbar를 제거하려고 할 때 온다. 나는 시크 바가 초점을 잃었을 때 알아낼 방법이 필요합니다. 나는 setOnFocusChangeListener를 사용하여 시도했지만 호출 된 적이 결코 없다. 코드의 일부는 모두 내가 SeekBar를 여전히 볼 수있는 목록을 스크롤 할 때를 제외하고 작동 android SeekBar - 초점을 잃어버린

public class MainActivity extends Activity implements OnFocusChangeListener { 
    SeekBar seek; 

    public boolean onOptionItemSelected(MenuItem item) { 
     if(item.getId() == R.id.menu_grid_size) 
     { 
      if(seek != null) { 
       seek = new SeekBar(this); 
       seek.setOnFocusChangeListener(this); 
       ... 
       layout.addView(seek, layoutparams); 
      } else { 
       layout.removeView(seek); 
       seek = null; 
      } 
     } 
    } 

    public void onFocusChange(Viewv, boolean hasFocus) { 
     layout.removeView(seek); 
    } 

} 

이하입니다. 어쩌면 이것이 내가 원하는 것을하기위한 최선의 방법은 아닐지도 모릅니다.

편집 : 위의 코드를 수정하여 버튼을 두 번 클릭하면 오류가 발생했습니다.

답변

1

그래서 나는 생각하는 해결책을 찾은 것 같습니다. seekbar를 사용하기 때문에 onStopTrackingTouch() 메서드를 사용하여 손가락이 들리는 시점을 확인하고 슬라이더를 제거 할시기의 표시기로 사용합니다.

public void onStopTrackingTouch(SeekBar seekBar) { 
    if(seekBar != null){ 
     layout.removeView(seekBar); 
     seekBar = null; 
}