سؤال

أنا أحاول استخدام ViewPager داخل أ ScrollView, ، ولكن ViewPager لا يظهر.إذا قمت بإزالة ScrollView ال ViewPager يبدو بخير.

لقد أنشأت مشروع اختبار بسيط مع ما يلي:

الرئيسية.تخطيط شمل:

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

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

    </ScrollView>
</LinearLayout>

فئة النشاط:

public class ScrollViewWithViewPagerActivity 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) {
    }
}

شكرا على وقتك.

هل كانت مفيدة؟

المحلول

لقد اكتشفت ذلك;

كنت بحاجة إلى إضافة android:fillViewport="true" إلى عنصر سكرولفيو.

نصائح أخرى

نعم ، من الممكن أن يكون عارض الصفحة داخل عرض التمرير

استخدم الكود أدناه وستحقق هدفك ، لقد فعلت الشيء نفسه في الكود الخاص بي أيضًا. Genacodicetagpre

آمل أن يساعد هذا شخصًا ما في حل مشكلات التمرير مع ViewPager المتداخلة داخل ScrollView.

نجح هذا الحل بالنسبة لي، مع محتوى ديناميكي.

http://www.henning.ms/2013/09/09/viewpager-that-simply-dont-measure-up/

في ملف اكس ام ال ScrollView يضع android:fillViewport=true و android:layout_height=wrap_content

ووضع في ViewPager مخصص أيضا android:layout_height=wrap_content

لماذا تحاول القيام بذلك؟الطريقة الأكثر طبيعية هي لف كل صفحة برمز ترميز عام إذا احتجت إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top