Android中不同宽度的布局在ViewPager中

前端之家收集整理的这篇文章主要介绍了Android中不同宽度的布局在ViewPager中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用Horizo​​ntal 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);
}
原文链接:https://www.f2er.com/android/310595.html

猜你在找的Android相关文章