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

  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • hanksranger

    hanksranger

    6 EKİM 2009