viewpager 不允许向左滑动
viewpager does not allow to swipe left
所以如果我有三个片段 A、B 和 C。
因此,当我启动 Fragment B 时,我希望 viewpager 让我从左向右滑动,它应该带我回到 Fragment A,但是 viewpager 默认情况下让我从右向左滑动以转到 Fragment A。
所以基本上我希望 viewpager 让我从左向右滑动而不是从右向左滑动。
我也试过:
viewpager.setRotationY=180
这确实让我可以做我想做的事,但我的片段中的所有内容都会颠倒过来。
我使用的适配器:
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;
}
}
我使用适配器的activity:
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);
}
});
}
}
我认为您的代码误导了您,因为您在 setAdapter(...)
之前使用了 viewPager.setCurrentItem(1);
,您的 ViewPager 将不会如您预期的那样转到项目 1。
所以,试着把 viewPager.setCurrentItem(1);
放在 setAdapter(...)
之后
所以如果我有三个片段 A、B 和 C。 因此,当我启动 Fragment B 时,我希望 viewpager 让我从左向右滑动,它应该带我回到 Fragment A,但是 viewpager 默认情况下让我从右向左滑动以转到 Fragment A。
所以基本上我希望 viewpager 让我从左向右滑动而不是从右向左滑动。
我也试过:
viewpager.setRotationY=180
这确实让我可以做我想做的事,但我的片段中的所有内容都会颠倒过来。
我使用的适配器:
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;
}
}
我使用适配器的activity:
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);
}
});
}
}
我认为您的代码误导了您,因为您在 setAdapter(...)
之前使用了 viewPager.setCurrentItem(1);
,您的 ViewPager 将不会如您预期的那样转到项目 1。
所以,试着把 viewPager.setCurrentItem(1);
放在 setAdapter(...)