【问题标题】:viewpager does not allow to swipe leftviewpager 不允许向左滑动
【发布时间】:2020-10-07 13:50:05
【问题描述】:

所以如果我有三个片段 A、B 和 C。 因此,当我启动 Fragment B 时,我希望 viewpager 让我从左滑到右,它应该带我回到 Fragment A,但默认情况下 viewpager 让我从右滑到左转到 Fragment A。

所以基本上我希望 viewpager 让我从左滑到右,而不是从右滑到左。

我也试过: viewpager.setRotationY=180 这确实让我可以做我想做的事,但我的 Fragments 中的所有内容都会颠倒过来。

我正在使用的适配器:


import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import org.jetbrains.annotations.NotNull;

public class Adapter  extends FragmentPagerAdapter {

    public Adapter(FragmentManager fragmentManager){
        super(fragmentManager);

    }
    @NonNull
    @NotNull
    @Override
    public Fragment getItem(int position) {
        if(position==0){

            return new SettingsFragment();
        }
        if(position==1){

            return new BlankFragment();
        }
        if(position==2){
            return new VersionFragment();
        }
            return null;
        }


    @Override
    public int getCount() {
        return 3;
    }
}

我使用适配器的活动:


public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        Fragment fr=new Fragment();
        getSupportFragmentManager().beginTransaction().addToBackStack(null).add(fr,"settings_fragment").commit();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ViewPager viewPager=findViewById(R.id.ViewPager);
                viewPager.setCurrentItem(1);
                viewPager.setAdapter(new Adapter(getSupportFragmentManager()));
                viewPager.setOffscreenPageLimit(1);

            }
        });


    }
}

【问题讨论】:

  • 请在您使用该适配器的地方分享代码
  • 添加了我使用适配器@RuiAlves的活动
  • 对不起@Rag,我之前没有问过,你能不能也添加 XML 布局?

标签: android android-fragments android-viewpager


【解决方案1】:

我认为您的代码误导了您,因为您在 setAdapter(...) 之前使用 viewPager.setCurrentItem(1);,您的 ViewPager 不会像您预期的那样转到项目 1

所以,试着把 viewPager.setCurrentItem(1); 放在 setAdapter(...) 之后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    相关资源
    最近更新 更多