我想使用Horizontal View Pager创建一些滚动视图.左视图必须具有全屏宽度,但只有四分之一宽度(它将是Dolphin浏览器中的垂直面板).有可能这样做吗?我在正确的布局中改变了
android:layout_width,但它没有用.
我的代码:
- public class TestActivity extends FragmentActivity {
- @Override
- public void onCreate(final Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main_view);
- MyPagerAdapter adapter = new MyPagerAdapter();
- ViewPager pager = (ViewPager) findViewById(R.id.panelPager);
- pager.setAdapter(adapter);
- pager.setCurrentItem(0);
- }
- }
main_view.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <android.support.v4.view.ViewPager
- android:id="@+id/panelPager"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </LinearLayout>
MyPagerAdapter.java
- public class MyPagerAdapter extends PagerAdapter {
- @Override
- public int getCount() {
- return 2;
- }
- @Override
- public Object instantiateItem(final View collection,final int position) {
- LayoutInflater inflater =
- (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- int resId = 0;
- switch (position) {
- case 0:
- resId = R.layout.left;
- break;
- case 1:
- resId = R.layout.right;
- break;
- }
- View view = inflater.inflate(resId,null);
- ((ViewPager) collection).addView(view,0);
- return view;
- }
- @Override
- public void destroyItem(final View arg0,final int arg1,final Object arg2) {
- ((ViewPager) arg0).removeView((View) arg2);
- }
- @Override
- public boolean isViewFromObject(final View arg0,final Object arg1) {
- return arg0 == ((View) arg1);
- }
left.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/textView1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="LEFT" />
- </LinearLayout>
right.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="50dp"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="@color/light_blue" >
- <TextView
- android:id="@+id/textView2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="RIGHT"/>
- </LinearLayout>
解决方法
检查Murphy在
this question上的答案.你需要在PagerAdapter类上覆盖PagerAdapter的getPageWidth()方法,例如:
- @Override
- public float getPageWidth(int page) {
- if(page==0) {
- Display display = getWindowManager().getDefaultDisplay();
- Point size = new Point();
- display.getSize(size);
- return (float)LEFT_FRAGMENT_PIXEL_WIDTH / size.x;
- }
- else
- return super.getPageWidth(page);
- }