android–ViewPager与项目预览

android–ViewPager与项目预览,第1张

概述我希望显示一周中所有日期的ViewPager,并预览当前项目的以下项目.我已经尝试了很多从stackoverflow建议的解决方案,但它们都没有工作.我不会在ViewPager中使用片段,因此我使用了PagerAdapter.看这个图片:我的出发点是:>activity_main.xml<TextViewandroid:layout_width="m

我希望显示一周中所有日期的VIEwPager,并预览当前项目的以下项目.
我已经尝试了很多从stackoverflow建议的解决方案,但它们都没有工作.我不会在VIEwPager中使用片段,因此我使用了PagerAdapter.

看这个图片:

我的出发点是:

> activity_main.xml

<TextVIEw    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:gravity="center_horizontal"    androID:text="Choose a day of the week:" /><androID.support.v4.vIEw.VIEwPager    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:ID="@+ID/weekOfTheDayPager"/>

> MainActivity.java

public class MainActivity extends AppCompatActivity {@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    setUpAdapter();}private voID setUpAdapter() {    VIEwPager _mVIEwPager = (VIEwPager) findVIEwByID(R.ID.weekOfTheDayPager);    final String[] daysOfTheWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "FrIDay", "Saturday"};    final Context myContext = getBaseContext();    _mVIEwPager.setAdapter(new PagerAdapter() {        @OverrIDe        public int getCount() {            return daysOfTheWeek.length;        }        @OverrIDe        public boolean isVIEwFromObject(VIEw vIEw, Object object) {            return vIEw == object;        }        @OverrIDe        public Object instantiateItem(VIEwGroup collection, int position) {            LayoutInflater inflater = LayoutInflater.from(myContext);            VIEwGroup layout = (VIEwGroup) inflater.inflate(R.layout.dayoftheweeklayout, collection, false);            ((TextVIEw) layout.findVIEwByID(R.ID.dayOfTheWeekTextVIEw)).setText(daysOfTheWeek[position]);            collection.addVIEw(layout);            return layout;        }        @OverrIDe        public voID destroyItem(VIEwGroup collection, int position, Object vIEw) {            collection.removeVIEw((VIEw) vIEw);        }    });}}

最后是VIEwPager项的布局:

> dayoftheweeklayout.xml

<?xml version="1.0" enCoding="utf-8"?><FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content">    <TextVIEw        androID:ID="@+ID/dayOfTheWeekTextVIEw"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:gravity="center"        androID:text="Sunday"        androID:layout_gravity="center_horizontal"/></FrameLayout>

任何建议将不胜感激.

解决方法:

所以看起来你想要一个轮播视图.

这是食谱:

首先,为了在VIEwPager中向侧面显示页面,您需要在侧面提供一些填充,然后将clipTopadding设置为false:

    <androID.support.v4.vIEw.VIEwPager        androID:ID="@+ID/weekOfTheDayPager"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:clipTopadding="false"        androID:paddingEnd="@dimen/vIEw_pager_padding"        androID:paddingleft="@dimen/vIEw_pager_padding"        androID:paddingRight="@dimen/vIEw_pager_padding"        androID:paddingStart="@dimen/vIEw_pager_padding"/>

接下来,您需要覆盖PagerAdapter中的getPageWIDth,以告诉VIEwPager您希望一次显示三个页面:

    @OverrIDe    public float getPageWIDth(int position) {        return 1F / 3F;    }

然后你需要告诉VIEwPager使用自定义的Pagetransformer:

    vIEwPager.setPagetransformer(false, new MyPagetransformer());

public static class MyPagetransformer implements VIEwPager.Pagetransformer {    private ArgbEvaluator mcolorFade = new ArgbEvaluator();    @OverrIDe    public voID transformPage(VIEw page, float position) {         // position is 0 when page is centered (current)         // -1 when page is all the way to the left          // +1 when page is all the way to right         // Here's an example of how you might morph the color         int color = mcolorFade(Math.abs(position), color.RED, color.GRAY);         TextVIEw tv = (TextVIEw) page.findVIEwByID(R.ID.dayOfTheWeekTextVIEw);         tv.setTextcolor(color);    }}

可能有些东西我忘记了,但搜索SO“for androID vIEwpager carousel”,你会在某处找到答案.

总结

以上是内存溢出为你收集整理的android – ViewPager与项目预览全部内容,希望文章能够帮你解决android – ViewPager与项目预览所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1118370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存