هل من الممكن أن يكون فيوباجر داخل سكرولفيو?
-
29-10-2019 - |
سؤال
أنا أحاول استخدام 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
لماذا تحاول القيام بذلك؟الطريقة الأكثر طبيعية هي لف كل صفحة برمز ترميز عام إذا احتجت إلى ذلك.