私はAndroid=を初めて使用し、Google Webサイトでサンプルコードを調べています。現在使用しているコードはSwipeRefreshLayoutです。 http://developer.Android .com/samples/SwipeRefreshLayoutBasic/index.html
コードでは、リストビューに対してSwipeRefreshLayoutが実行されていることがわかります。つまり、リストビューを下にドラッグすると、メソッドがトリガーされ、リストビュー自体が更新されます。
<Android.support.v4.widget.SwipeRefreshLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/swiperefresh"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ListView
Android:id="@Android:id/list"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</Android.support.v4.widget.SwipeRefreshLayout>
混乱しているのは、リストビューを下にドラッグしたときにリストビューの上部に表示される進行状況アニメーションバーのコードにレイアウトがないことです。 SwipeRefreshLayoutは、ユーザーがxmlでレイアウトを指定する必要なく、下にドラッグするとプログレスアニメーションバーを自動的に生成すると思いますか?
たとえば、更新時にアニメーションが画面の端に触れないように、進行状況アニメーションバーの両端にパディングを配置したい場合、どうすればよいでしょうか。
https://developer.Android.com/reference/Android/support/v4/widget/SwipeRefreshLayout.html は実際には何も言っていません。
あなたできませんアニメーションを変更します。
SwipeRefreshLayout
では、あまりカスタマイズできません。これは、開発者が一般的なパターンに固執するためのGoogleの試みだと思います。スタイルを設定できるのは、setColorScheme()
で指定されたアニメーションの4色です。
SwipeRefreshLayout
は、事前に定義されたアニメーションを上部に表示するよう注意します。これは、canChildScrollUp()
がfalseを返し、ユーザーが「プルダウン」した場合、またはsetRefreshing(true)
を設定した場合です。 setRefreshing(false)
を使用してアニメーションをオフにします。リスナーのメソッドonRefreshing()
にロジックを配置します。 ListView
にSwipeRefreshLayout
でないものを入れた場合は、canChildScrollUp()
をオーバーライドします。ここから先に進んでください。
あなたはそれを変更することはできませんが、それを非表示にして、トリガーされたら自分のものを表示することができます:-)
SwipeRefreshLayout swiperefresh = (SwipeRefreshLayout)root.findViewById(R.id.swiperefresh);
swiperefresh.setOnRefreshListener(this);
swiperefresh.setColorSchemeColors(0,0,0,0);
swiperefresh.setProgressBackgroundColor(Android.R.color.transparent);
ノート:
eclipseでは、これをコンパイルするために@SuppressLint( "ResourceAsColor")を追加する必要があります。
それでも適切な時点でsetRefreshing(false)を呼び出す必要があります。そうしないと、onRefreshが再度トリガーされません。