使用 VIewPager2 的简单滑动屏幕 (Java)
Simple swipe screen using VIewPager2 (Java)
我正在尝试创建将显示三个屏幕的布局,这些屏幕可以通过滑动或按钮进行更改。在这些按钮之间应该是所选页面的点指示器。
我花了很多时间搜索样本如何做,但通常我会卡在一些问题上。我不需要动态添加片段的选项。最好的可行解决方案是 thisone,但我无法创建三个不同的片段,而且它缺少点指示器。
有人可以帮我解决这个问题吗?非常感谢。
您可以通过从 RecyclerView.Adapter() 扩展并为每个页面使用简单的布局(而不是片段)来创建一个适配器,并将该适配器设置为 viewpager2.adapter = adapter
您可以只拥有一个扩展到 FragmentStateAdapter 的新 class,并将 class 设置为您的 viewpager 的适配器,如下所示:
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
ViewPager2 viewPager2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager2 = findViewById(R.id.viewpager2);
viewPager2.setAdapter(new ViewPagerFragmentAdapter(this));
}
static class ViewPagerFragmentAdapter extends FragmentStateAdapter {
public ViewPagerFragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position) {
case 0:
return new Vertical1();
case 1:
return new Vertical2();
case 2:
return new Vertical3();
}
return new Vertical2();
}
@Override
public int getItemCount() {
return 3;
}
}
}
我正在尝试创建将显示三个屏幕的布局,这些屏幕可以通过滑动或按钮进行更改。在这些按钮之间应该是所选页面的点指示器。
我花了很多时间搜索样本如何做,但通常我会卡在一些问题上。我不需要动态添加片段的选项。最好的可行解决方案是 thisone,但我无法创建三个不同的片段,而且它缺少点指示器。
有人可以帮我解决这个问题吗?非常感谢。
您可以通过从 RecyclerView.Adapter() 扩展并为每个页面使用简单的布局(而不是片段)来创建一个适配器,并将该适配器设置为 viewpager2.adapter = adapter
您可以只拥有一个扩展到 FragmentStateAdapter 的新 class,并将 class 设置为您的 viewpager 的适配器,如下所示:
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
ViewPager2 viewPager2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager2 = findViewById(R.id.viewpager2);
viewPager2.setAdapter(new ViewPagerFragmentAdapter(this));
}
static class ViewPagerFragmentAdapter extends FragmentStateAdapter {
public ViewPagerFragmentAdapter(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
}
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position) {
case 0:
return new Vertical1();
case 1:
return new Vertical2();
case 2:
return new Vertical3();
}
return new Vertical2();
}
@Override
public int getItemCount() {
return 3;
}
}
}