2012-04-29 16 views
8

2つのデバイスでのmy listviewの動作は、オーバースキャンしたときに黄色/オレンジ色に変わるか、オーバースキャンしてスナップバックできることです。後者の振る舞いは、私が避けたいと思っている背景を示しているので悪いです。アンドロイドのリストビューでオーバースクロールとバウンスを無効にするにはどうすればよいですか?

私が試した:

listview.setOverScrollMode(ListView.OVER_SCROLL_NEVER); 

をし、それはもう、背景が表示されませんが、現在、非常に迷惑なバウンス効果があります。バウンスとオーバースクロールの両方を無効にし、スクロールが終わりに達しても何の効果もなく終了するようにすることは可能ですか?

PS:両方のデバイスで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

あなたは迷惑なバウンス効果の解決策を見つけたことがありますか?私はリストビューでもそれを見ています。 – Brian

答えて

0

あなたはリストビューを拡張し、MyListViewをクラスを作成することができ、あなたがoverScrollByメソッドをオーバーライドして、ゼロ

1

にmaxOverScrollY設定することができますがここで私はうまくいけば、それはそれらの検索を支援する、これを解決する方法です。重要な点は、OnScrollListenerをリストにアタッチし、ジェスチャーが処理されているタイミングを追跡し、リストの末尾に達したときです。その後、飛行機がまだ進行している間、システムが移動しようとすると、その位置を最後までリセットし続けます。

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; 
       } 

      } 

     }); 
    } 

} 
関連する問題