gpt4 book ai didi

android - 我可以设置viewpager的项目宽度吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:16 25 4
gpt4 key购买 nike

我希望在viewpager的一个页面中显示3个item,但是现在我只能设置viewpager的padding值和margin值,所以在viewpager的一个页面中只能显示一个item。如何设置项目宽度?我想如果我可以设置更小的项目宽度,viewpager 将在页面中显示更多项目。

最佳答案

快速回答

您想要的是覆盖您为 ViewPager 制作的 PagerAdapter 实现中的 getPageWidth

例如,将其设置为 0.8f 将使单个页面仅覆盖 viewpager 宽度的 80%,以便下一页和/或上一页的一部分可见。

@Override
public float getPageWidth(final int position) {
return 0.8f;
}

更多信息请访问 https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)

其他备注

另请注意,负边距只会导致单独的页面相互重叠。边距用于定义每页之间的空间。

如果没有配置替代的 pageWidth(没有 setter ,只有覆盖),默认情况下它将覆盖 100%,除非拖动,否则其他页面的任何部分都不可见。

代码示例

可以在此处找到关于可能的内容的非常好的概述 https://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html

布局中的 View 分页器

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

内联配置适配器实现的示例,这将在 onCreate 或 onViewCreated 方法中进行:

// get a reference to the viewpager in your layout
ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager);
// this margin defines the space between the pages in the viewpager mViewPager.setPageMargin(context.getResources().getDimensionPixelSize(R.dimen.margin_normal));
// setting the adapter on the viewpager, this could/should be a proper Adapter implementation in it's own class file instead
mViewPager.setAdapter(new PagerAdapter() {

// just example data to show, 3 pages
String[] titles = {"Eins", "Zwei", "Drei"};
int[] layouts = {R.layout.layout1, R.layout.layout2, R.layout.layout3};

@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
// here you can inflate your own view and dress up
ViewGroup layout = (ViewGroup) inflater.inflate(layouts[position], container, false);
container.addView(layout);
return layout;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}

@Override
public float getPageWidth(final int position) {
return 0.8f;
}

@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}

@Override
public int getCount() {
return layouts.length;
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
});

示例代码基于 https://newfivefour.com/android-viewpager-simple-views.html

关于android - 我可以设置viewpager的项目宽度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10168087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com