SORU
11 Kasım 2014, Salı


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
11 Kasım 2014, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Make:

    Make:

    23 Mart 2006
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005
  • Yanko Kral

    Yanko Kral

    8 HAZİRAN 2006