2012-04-15 6 views
6

自分のオーバースキャン機能を実装できるように、リストビューでオーバースキャンを完全に無効にする必要があります。サムスンギャラクシータブ2.3.3のリストビューオーバースクロールを無効にするandroid

overscrollモードをOVERSCROLL_NEVERに設定するだけで、コアのリストビュークラスを見ても十分に簡単です。私のSamsung Galaxy s2上でこの素晴らしい仕事。しかし、うまくいきません。Galaxy Tab 2.3.3.

誰も私に役立つサムスンのリストビューのカスタマイズの経験が豊富でしたか?

答えて

2

リストビューの高さを固定値に設定する必要があります。 あなたのコンテンツが動的にアダプタをリセットした後、実際のLISTSIZEを測定するために素敵な機能がありますされている場合:

public static void setListViewHeightBasedOnChildren(ListView listView) { 
    ListAdapter listAdapter = listView.getAdapter(); 
    if (listAdapter == null) { 
     // pre-condition 
     return; 
    } 

    int totalHeight = 0; 
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST); 
    for (int i = 0; i < listAdapter.getCount(); i++) { 
     View listItem = listAdapter.getView(i, null, listView); 
     listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED); 
     totalHeight += listItem.getMeasuredHeight(); 
    } 

    ViewGroup.LayoutParams params = listView.getLayoutParams(); 
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
    listView.setLayoutParams(params); 
    listView.requestLayout(); 
} 

あなたのアダプタを設定した後PARAMTERとしてあなたのリストビューで、この静的メソッドを呼び出す必要があります。 スクロールビューを追加できるようになりました(あなたのリストビューや他のビュー内にあります)。 2.3.3のこの動作は小さなバグです...私が記述した方法を除き、リストビューをスクロールビューに含める簡単な方法はありません。 そのため彼らはOVERSCROLL_NEVERモードを導入しました:)

コードはDougW!

3

それは(アンドロイド2.2)三星銀河タブ上で私の仕事:

try { 

    // list you want to disable overscroll 
    // replace 'R.id.services' with your list id 
    ListView listView = ((ListView)findViewById(R.id.services)); 

    // find the method 
    Method setEnableExcessScroll = 
      listView.getClass().getMethod("setEnableExcessScroll", Boolean.TYPE); 

    // call the method with parameter set to false 
    setEnableExcessScroll.invoke(listView, Boolean.valueOf(false)); 

} 
catch (SecurityException e) {} 
catch (NoSuchMethodException e) {} 
catch (IllegalArgumentException e) {} 
catch (IllegalAccessException e) {} 
catch (InvocationTargetException e) {} 
+0

ブリリアントを!これは本当に私に多くの面倒を保存しました。どのようなメソッド名を調べるべきか、どのようにしてS2 APIが公開されているのですか? – npace

関連する問題