SwipeRefreshLayout başlangıçta göstergesi görünmüyor setRefreshing
Çok basit bir düzeni var ama benim parçası onActivityCreate içinde setRefreshing(true) aradığımda başlangıçta göstermiyor. Sadece bir çek yenilemek için ben ne zaman gösterir. Başlangıçta gösterilmesini mi neden herhangi bir fikir?
Parça xml:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@ id/swipe_container"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</RelativeLayout>
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
Parça kodu:
public static class LinkDetailsFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
@InjectView(R.id.swipe_container)
SwipeRefreshLayout mSwipeContainer;
public static LinkDetailsFragment newInstance(String subreddit, String linkId) {
Bundle args = new Bundle();
args.putString(EXTRA_SUBREDDIT, subreddit);
args.putString(EXTRA_LINK_ID, linkId);
LinkDetailsFragment fragment = new LinkDetailsFragment();
fragment.setArguments(args);
return fragment;
}
public LinkDetailsFragment() {
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mSwipeContainer.setOnRefreshListener(this);
mSwipeContainer.setColorScheme(android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light,
android.R.color.holo_red_light);
mSwipeContainer.setRefreshing(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_link_details, container, false);
ButterKnife.inject(this, rootView);
return rootView;
}
@Override
public void onRefresh() {
// refresh
}
}
CEVAP
Bu işe yaramazsa, android.support.v4
, ama sürümden 21.0.0 devam eden önceki sürüm üzerinde çalışmak için kullanılan ve hala android.support.v4:21.0.3
de tahliye var10-12 Aralık, 2014ve bu sebebi.
SwipeRefreshLayout göstergesi setRefreshing(true)
SwipeRefreshLayout.onMeasure()
önce çağrıldığında görünmüyor
Çözüm:
SwipeRefreshLayout
o setProgressViewOffset()
arama düzeni SwipeRefreshLayout.onMeasure()
neden Daire görünümü hemen çağrılacak invalidtes.
mSwipeRefreshLayout.setProgressViewOffset(false, 0,
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics()));
mSwipeRefreshLayout.setRefreshing(true);
Daha İyi Çözüm GÜNCELLEŞTİRİN
Bu actionbar çünkü yönünü değiştirdiğinde daha ince veya el ile actionbar boyutunu ayarlamanız gerekir. Hangi ilerleme spinner geçerli actionbar boyutuna başarılı bir tokatlamak jest sonra sıfırlamak gerekir, bu görünüm, üstten uzaklığı piksel olarak ayarladık.
TypedValue typed_value = new TypedValue();
getActivity().getTheme().resolveAttribute(android.support.v7.appcompat.R.attr.actionBarSize, typed_value, true);
mSwipeRefreshLayout.setProgressViewOffset(false, 0, getResources().getDimensionPixelSize(typed_value.resourceId));
GÜNCELLEME 20 Kasım 2014
Görünüm başladıktan sonra bu SwipeRefreshLayout göstermek için uygulamanız için çok önemli değilse. Sadece işleyicileri veya istediğiniz herhangi bir şeyi kullanarak gelecekte bir zaman gönderebilirsiniz.
örnek olarak.
handler.postDelayed(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
}
}, 1000);
ya Volodymyr Baydalka cevabı da belirtildiği gibi.
İşte android sorunu izci issue. Bunun düzeltilmesi lazım onlara göstermek upvote lütfen.
Android Liste Görünümü setSelection() ...
Neden't ben onları kavramak için ...
Böyle büyük mükafat 6: Klavye simülatö...
Arşivler Organizatörü kadar böyle büyü...
Gizlemek Başlangıçta tek Form...