Toi co 'trang phuc' co mot so phan phoi tren, nhung ai cung co the chieu dai hon so voi chieu cao. Tốt thôi, chỉ cần đặt tất cả bố cục (toàn bộ trang) bên trong a ScrollView
, không vấn đề gì.
Một trong những thành phần là a ViewPager
. Điều này hiển thị chính xác, nhưng phản ứng với thao tác vuốt / lướt không hoạt động chính xác, nó bị chập chờn và không phải lúc nào cũng hoạt động. Nó dường như bị 'nhầm lẫn' với ScrollView
, vì vậy chỉ hoạt động 100% khi bạn ném theo một đường ngang chính xác.
Nếu tôi loại bỏ ScrollView
, ViewPager phản hồi hoàn hảo.
Tôi đã tìm kiếm xung quanh và không tìm thấy đây là một khiếm khuyết đã biết. Đã có ai thử điều này chưa?
- Phiên bản nền tảng: 1.6
- Thư viện tương thích v4.
- Thiết bị: HTC Incredible S
Dưới đây là một số mã ví dụ để bạn kiểm tra, nhận xét ScrollView
để xem nó hoạt động chính xác.
Hoạt động:
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) {
}
}
Bố trí:
<?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>