googleとstackoverflowでしばらく検索しましたが、解決策が見つかりません。センスuiのようにAndroid2.2または2.1でリストビューのオーバースクロールを取得する可能性はありますか?!私のアラームビューのように:AlarmView Sense UI
5 に答える
Chirag の回答がこのように高く評価されているのを見て、私はショックを受けました。不完全でビルドされないため、誰の役にも立たない。また、そのソースを引用していません。
元のコードは次の場所にあります: http://code.google.com/p/scroll-pager/
また、スクロール ページャーのコードは GPL ライセンスの下でリリースされていることにも注意してください。
更新 : scroll-pager の作成者と話をしたところ、彼は MIT ライセンスに切り替えました。
Listviewには、オーバースクロールのサポートが組み込まれています。setOverscrollModeおよび関連するメソッドsetOverscrollHeaderおよびsetOverscrollFooterを確認してください。ListViewは、AbsListView.onOverscrolledをオーバーライドすることにより、オーバースクロールヘッダー/フッターを利用します。別の動作が必要な場合は、自分でオーバーライドして実装できます。
この投稿はかなり古いことがわかりますが、最近GitHubでこのオープンソース プロジェクトをリリースしました。このプロジェクトはこの問題を解決し、他の人が将来同様のオーバー スクロールの問題を解決するのに役立つ可能性があります。
これは基本的に、多くのコア Android スクロール可能ビューに iOS のようなオーバー スクロール効果を提供します。ListView はその 1 つであり、非常に簡単に適用できます。
特にリストビューの場合、これを有効にするために必要なことは次のとおりです。
ListView listView = ... // For example: (ListView) findViewById(R.id.list_view);
OverScrollDecoratorHelper.setUpOverScroll(listView);
プロジェクトを自分のプロジェクトに含めるには、これを build.gradle に追加します。
dependencies {
// ...
compile 'me.everything:overscroll-decor-android:1.0.0'
}
http://developer.android.com/reference/android/widget/ScrollView.html
ListView は独自の垂直スクロールを処理するため、ListView で ScrollView を使用しないでください。最も重要なことは、これを行うと、大きなリストを処理するための ListView の重要な最適化がすべて無効になります。これは、ListView がアイテムのリスト全体を効果的に表示して、ScrollView によって提供される無限のコンテナーを埋めるためです。
xml ファイルで scrollview を定義します。
次に、Javaファイルでこれを書きます:
scrollView = (ScrollView) findViewById(R.id.scr);
contentView = (ViewGroup) findViewById(R.id.r2);
scrollView.setOnTouchListener(new ScrollPager(scrollView, contentView));
scrollView.post(new Runnable() {
public void run() {
scrollView.scrollTo(0, contentView.getPaddingTop());
}
});
上記の Java ファイルにクラスを追加します。
public class ScrollPager implements OnTouchListener
public ScrollPager(ScrollView aScrollView, ViewGroup aContentView)
{
mScrollView = aScrollView;
mContentView = aContentView;
scroller = new Scroller(mScrollView.getContext(), new OvershootInterpolator());
task = new Runnable()
{
public void run()
{
scroller.computeScrollOffset();
mScrollView.scrollTo(0, scroller.getCurrY());
if (!scroller.isFinished())
{
mScrollView.post(this);
}
}
};
}