2012-04-29 2 views
8

2 디바이스에서 내 listview의 동작은 오버 스캔 할 때 노란색/주황색으로 바뀌거나 오버 스캔되어 다시 스냅 될 수 있다는 것입니다. 후자의 행동은 내가 막고 싶은 배경을 보여주기 때문에 좋지 않습니다.android listview에서 overscroll 및 바운스를 비활성화하려면 어떻게합니까?

listview.setOverScrollMode(ListView.OVER_SCROLL_NEVER); 

를하고는 더 이상 배경을 표시하지 않습니다하지만 지금은 매우 성가신 바운스 효과가있다 :

나는 시도했다. 바운스와 overscrolling을 불가능하게 할 수 있습니까? 그리고 스크롤이 끝나면 아무 효과없이 끝나게 할 수 있습니까?

추신 : 두 장치에서 모두 Android 2.3을 사용하고 있습니다. 여기에 내가 잘하면 검색하는 데 도움이됩니다,이 문제를 해결하는 방법은

+2

확인이 답변 : http://stackoverflow.com/questions/5778820/is-there-a-way-to-disable-android-listview-animation – vladexologija

+0

확인이 답변. 완벽하게 작동합니다. http://stackoverflow.com/questions/7777803/listview-top-highlight-on-scrolling/17569996#17569996 – kord

+0

성가신 반송 효과에 대한 해결책을 찾아 냈습니까? 나는 나의 listviews에서 그것을 또한보고있다. – Brian

답변

0

당신은 목록보기를 확장하는 mylistview 클래스를 만들 수 있습니다, 당신은 overScrollBy 방법을 무시하고 제로

1

에 maxOverScrollY 설정할 수 있습니다. 핵심은 OnScrollListener를 목록에 첨부하고, 제스처가 처리되는 시점을 추적하고, 목록의 끝에 도달했을 때를 추적하는 것입니다. 그런 다음 fling이 계속 진행되는 동안 시스템이 이동하려고하면 끝까지 재설정하십시오.

private ListView mListView; 
private ListAdapter mAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my_list); 

    mListView = (ListView) findViewById(R.id.listView); 
    mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getList(25)); 
    mListView.setAdapter(mAdapter); 
    mListView.setOverScrollMode(View.OVER_SCROLL_NEVER); 
    if(Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD || Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD_MR1){ 
     mListView.setOnScrollListener(new OnScrollListener(){ 
      private boolean flinging = false; 
      private boolean reachedEnd = false; 

      @Override 
      public void onScrollStateChanged(AbsListView view, int scrollState) { 
       flinging = (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING); 
       reachedEnd = false; 
      } 

      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
       if(reachedEnd && flinging && (firstVisibleItem + visibleItemCount < totalItemCount)){ 
        mListView.setSelection(mAdapter.getCount() - 1); 
       }else if(firstVisibleItem + visibleItemCount == totalItemCount){ 
        reachedEnd = true; 
       }else{ 
        reachedEnd = false; 
       } 

      } 

     }); 
    } 

} 
관련 문제