2012-04-29 25 views
8

Hành vi của chế độ xem danh sách của tôi trên 2 thiết bị là nó chuyển sang màu vàng/cam khi tôi ghi đè nó hoặc nó có thể được ghi đè và sau đó chụp lại. Hành vi thứ hai là xấu bởi vì nó cho thấy nền bên dưới nó mà tôi muốn ngăn chặn.Làm cách nào để tắt ghi đè và thư bị trả lại trong chế độ xem danh sách trên Android?

tôi đã cố gắng:

listview.setOverScrollMode(ListView.OVER_SCROLL_NEVER); 

và nó không hiển thị phía sau nữa nhưng bây giờ có một hiệu ứng nảy rất khó chịu. Có thể cả hai vô hiệu hóa các thư bị trả lại và overscrolling và làm cho nó để di chuyển chỉ kết thúc mà không có bất kỳ tác dụng khi nó đạt đến kết thúc?

PS: Tôi đang sử dụng Android 2.3 trên cả hai thiết bị.

+2

Kiểm tra câu trả lời này: http://stackoverflow.com/questions/5778820/is-there-a-way-to-disable-android-listview-animation – vladexologija

+0

Kiểm tra câu trả lời này. Hoạt động hoàn hảo. http://stackoverflow.com/questions/7777803/listview-top-highlight-on-scrolling/17569996#17569996 – kord

+0

Bạn đã bao giờ tìm ra giải pháp cho hiệu ứng thư bị trả lại phiền toái không? Tôi cũng thấy nó trong danh sách của tôi. – Brian

Trả lời

0

Bạn có thể tạo ra một lớp mylistview, mở rộng listview, và bạn có thể ghi đè lên các phương pháp overScrollBy và thiết lập maxOverScrollY để zero

1

Đây là cách tôi giải quyết này, hy vọng nó sẽ giúp những người tìm kiếm. Điều quan trọng là để đính kèm một OnScrollListener vào danh sách, theo dõi khi một cử chỉ đang được xử lý, và khi kết thúc danh sách đã đạt được. Sau đó, trong khi fling vẫn đang diễn ra, tiếp tục đặt lại vị trí để kết thúc nếu hệ thống cố gắng di chuyển nó.

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

      } 

     }); 
    } 

} 
Các vấn đề liên quan