使用 InfiniteViewPager 将按钮隐藏为位置的函数
Hiding Button as a function of position with InfiniteViewPager
以防有人熟悉 InfiniteViewPager。我也在那里开始了一个问题,但我希望这里的人可能有一些见解。
InfiniteViewPager: https://github.com/antonyt/InfiniteViewPager.
以下代码设置我的 InfiniteViewPager 并根据寻呼机的位置隐藏一个按钮。它有效,因为按钮开始消失,当您滑动到新位置时会出现,但当您滑动回到 "position 0" 时,按钮会重新出现。我相信这是因为当我向后滑动时,位置不再是 "position 0"。我在 logcat 中得到以下内容:
11-23 23:29:49.694 25109-25109/com.app.store D/InfinitePagerAdapter﹕ instantiateItem: real position: 3301
11-23 23:29:49.694 25109-25109/com.app.store D/InfinitePagerAdapter﹕ instantiateItem: virtual position: 1
这是启动寻呼机和 OnPageChangeListener 的代码。
private void init(Context context) {
View view = inflate(context, R.layout.listview_item, this);
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
ViewPager viewPager;
CustomPagerAdapter adapter;
viewPager = (ViewPager) findViewById(R.id.view_pager);
adapter = new CustomPagerAdapter(context);
PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter);
viewPager.setAdapter(wrappedAdapter);
//Hide the button unless showing image
final Button selectButton = (Button) findViewById(R.id.selectButton);
selectButton .setVisibility(GONE);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0)
selectButton.setVisibility(View.GONE);
else
selectButton.setVisibility(View.VISIBLE);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
基本上,我隐藏了 "position 0" 上的按钮,并使用 OnPageChangeListener 在每个其他位置显示它。但是,当我 return 到 "position 0" 时,它不会将 "position 0" 识别为 "position 0",因此它不会隐藏按钮。
编辑:我已经包含了我的 XML
<com.antonyt.infiniteviewpager.InfiniteViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="500dp"
android:scaleType="centerCrop">
<android.support.v4.view.PagerTitleStrip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/custom_viewpagertitlestrip"
android:layout_gravity="top" />
</com.antonyt.infiniteviewpager.InfiniteViewPager>
使用这个
if(position % size == 0)
selectButton.setVisibility(View.GONE);
else
selectButton.setVisibility(View.VISIBLE);
其中大小是实际页面的总数。
以防有人熟悉 InfiniteViewPager。我也在那里开始了一个问题,但我希望这里的人可能有一些见解。
InfiniteViewPager: https://github.com/antonyt/InfiniteViewPager.
以下代码设置我的 InfiniteViewPager 并根据寻呼机的位置隐藏一个按钮。它有效,因为按钮开始消失,当您滑动到新位置时会出现,但当您滑动回到 "position 0" 时,按钮会重新出现。我相信这是因为当我向后滑动时,位置不再是 "position 0"。我在 logcat 中得到以下内容:
11-23 23:29:49.694 25109-25109/com.app.store D/InfinitePagerAdapter﹕ instantiateItem: real position: 3301
11-23 23:29:49.694 25109-25109/com.app.store D/InfinitePagerAdapter﹕ instantiateItem: virtual position: 1
这是启动寻呼机和 OnPageChangeListener 的代码。
private void init(Context context) {
View view = inflate(context, R.layout.listview_item, this);
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
ViewPager viewPager;
CustomPagerAdapter adapter;
viewPager = (ViewPager) findViewById(R.id.view_pager);
adapter = new CustomPagerAdapter(context);
PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter);
viewPager.setAdapter(wrappedAdapter);
//Hide the button unless showing image
final Button selectButton = (Button) findViewById(R.id.selectButton);
selectButton .setVisibility(GONE);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0)
selectButton.setVisibility(View.GONE);
else
selectButton.setVisibility(View.VISIBLE);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
基本上,我隐藏了 "position 0" 上的按钮,并使用 OnPageChangeListener 在每个其他位置显示它。但是,当我 return 到 "position 0" 时,它不会将 "position 0" 识别为 "position 0",因此它不会隐藏按钮。
编辑:我已经包含了我的 XML
<com.antonyt.infiniteviewpager.InfiniteViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="500dp"
android:scaleType="centerCrop">
<android.support.v4.view.PagerTitleStrip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/custom_viewpagertitlestrip"
android:layout_gravity="top" />
</com.antonyt.infiniteviewpager.InfiniteViewPager>
使用这个
if(position % size == 0)
selectButton.setVisibility(View.GONE);
else
selectButton.setVisibility(View.VISIBLE);
其中大小是实际页面的总数。