SORU
5 Aralık 2011, PAZARTESİ


Bir ScrollView içinde ViewPager correclty kaydırma değil

Bir 'sayfa' bu bileşenleri bir numarası vardır, ve içeriği olan cihaz yüksekliği daha uzun. İyi, ScrollView, hiç bir sorun içerinin (tüm sayfa) koyarlar.

Bileşenlerinden biri ViewPager. Bu doğru işler, ama tokatlamak/kaçamak yanıt gergin olduğu doğru, performans değildir ve her zaman işe doens't. 'Alma' ile ScrollView sadece tam yatay bir çizgi atmak 0 çalışıyor. kafası karışmış gibi görünüyor

I ScrollView çıkararak ViewPager mükemmel yanıt verir.

Bir ara buralarda yaşadım ve bilinen bir kusur olarak bunu buldum. Başkasının bu karşılaştı?

Platform Sürümü: 1.6 Uyumluluk Kitaplığı v4.
Cihaz: HTC Incredible S

Herhangi bir yardım mutluluk duyacağız.

Aşağıda bazı örnek test, ScrollView correclty onu çalışırken görmek açýklama yapmak için kod.

Etkinlik:

package com.ss.activities;

import com.ss.R;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.TextView;

public class PagerInsideScollViewActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
        vp.setAdapter(new MyPagerAdapter(this));
    }
}

class MyPagerAdapter extends PagerAdapter {

    private Context ctx;

    public MyPagerAdapter(Context context) {
        ctx = context;
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public Object instantiateItem(View collection, int position) {

        TextView tv =  new TextView(ctx);
        tv.setTextSize(50);
        tv.setTextColor(Color.WHITE);
        tv.setText("SMILE DUDE, SMILE DUDE, SMILE DUDE, SMILE DUDE, SMILE DUDE, "  
                "SMILE DUDE, SMILE DUDE, SMILE DUDE, SMILE DUDE, SMILE DUDE, "  
                "SMILE DUDE, SMILE DUDE, SMILE DUDE, SMILE DUDE, SMILE DUDE, "  
                "SMILE DUDE, SMILE DUDE, SMILE DUDE");

        ((ViewPager) collection).addView(tv);

        return tv;

    }

    @Override
    public void destroyItem(View collection, int position, Object view) {
         ((ViewPager) collection).removeView((View) view);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

    @Override
    public void restoreState(Parcelable arg0, ClassLoader arg1) {
    }

    @Override
    public void startUpdate(View arg0) {
    }

    @Override
    public void finishUpdate(View arg0) {
    }
}

Düzen:

<?xml version="1.0" encoding="utf-8"?>
    <ScrollView
         xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <android.support.v4.view.ViewPager
                android:id="@ id/viewpager"
                android:layout_width="fill_parent"
                android:layout_height="300dp" />

        </LinearLayout>

    </ScrollView>

CEVAP
21 Ocak 2013, PAZARTESİ


İşte Benim kod. Viewpager scoll başladığında aynı sorun ve ben disallowedtouchevent vardı.

pager.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        v.getParent().requestDisallowInterceptTouchEvent(true);
        return false;
    }
});

pager.setOnPageChangeListener(new SimpleOnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        mPager.getParent().requestDisallowInterceptTouchEvent(true);
    }
});

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BachelorsPadTv

    BachelorsPad

    17 Ocak 2012
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012