Saya memiliki 'halaman' yang berisi sejumlah komponen, dan konten siapa yang lebih panjang dari tinggi perangkat. Baik, cukup letakkan semua tata letak (seluruh halaman) di dalam ScrollView, tidak masalah.
Salah satu komponennya adalah a ViewPager. Ini dirender dengan benar, tetapi respons terhadap gesekan / lempar tidak bekerja dengan benar, gelisah dan tidak selalu berfungsi. Tampaknya menjadi 'bingung' dengan ScrollView, jadi hanya berfungsi 100% saat Anda melemparkan dalam garis horizontal yang tepat.
Jika saya menghapus ScrollView, ViewPager merespons dengan sempurna.
Saya telah mencari-cari dan belum menemukan ini sebagai cacat yang diketahui. Apakah ada orang lain yang mengalami ini?
- Versi Platform: 1.6.0
- Library Kompatibilitas v4.
- Perangkat: HTC Incredible S
Di bawah ini adalah beberapa contoh kode untuk Anda uji, beri komentar ScrollView untuk melihatnya berfungsi dengan benar.
Aktivitas:
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) {
}
}
Tata Letak:
<?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>