我想使用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); }