SwipeRefreshLayoutをオーバーレイモードのActionBarと組み合わせて使用すると、読み込みアニメーションがアクションバーの背後に表示され、ほとんど見えなくなります。
アクションバーの上に表示するためにできることはありますか?
Appcompat-v7ライブラリのマテリアルデザインバージョン(v21.0.0)では、SwipeRefreshLayout
はProgress Viewオフセットを設定するメソッドを取得します。
public voidsetProgressViewOffset(ブールスケール、int start、int end)
更新インジケータの開始位置と静止位置は、常に更新コンテンツの上部近くに配置されます。この位置は一貫した場所ですが、ツールバーまたはアクションバーが存在するかどうかに基づいて、どちらの方向にも調整できます。
パラメータ
scaleプログレススピナーが表示されるように設定されている場所よりも高いzオーダーのビューがない場合、trueに設定します。
start進捗スピナーが表示されるこのビューの上部からのピクセル単位のオフセット。
endスワイプジェスチャが成功した後にプログレススピナーが停止する、このビューの上部からのピクセル単位のオフセット。
このコードを試してください:
int top_to_padding=100;
swipe_refresh_layout.setProgressViewOffset(false, 0,top_to_padding);
私はあなたのために働くことを願っています。
vijay Rajputの答えは私にとってはうまくいきますが、問題はキットカットまたは高さにのみあったので、私は以下を含めました:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) { swipeLayout.setProgressViewOffset(false, 0,100); }
SwipeRefreshLayoutでpaddingTopを設定する代わりに、layout_marginTopを設定すると、進行状況バーが表示されます。
<Android.support.v4.widget.SwipeRefreshLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginTop="?android:attr/actionBarSize">
現在、依存関係をappcompat 19.1.0から21.0.0にアップグレードし、コードを変更しなかったときにこの問題に遭遇しました。
これは実際、appcompat 21.0.0のSwipeRefreshLayoutの既知の問題です。
回避策はこちらをご覧ください: https://code.google.com/p/Android/issues/detail?id=77712
[〜#〜] edit [〜#〜]
これは、appcompat-v7ライブラリのv21より前の最適なソリューションでした。 v21以降を使用している場合は、承認済みの回答を確認してください。 appcompat-v7 <21 APIを使用している場合、これはまだ役立ちます。
これを簡単に修正するには、SwipeRefreshLayout(およびその依存関係)をプロジェクトにコピーし、進行状況バーの表示場所を変更して、上部マージンを追加します。
誰でも簡単に使えるように、マージンを実装したライブラリをリリースしました。これを見てください: https://github.com/Naroh091/SwipeRefreshLayoutOverlay
それが役に立てば幸い!