ViewPager 2の使用
「AndroidロボットはGoogleが作成したもので、私たちが共有している作品をコピーまたは修正するために使用され、Creative Commons 3.0の著者マークライセンスの条項と条件に従って使用されます.」
Display Views or Fragments in a swipeable format.
参照用にビューまたはドラフトを表示
Googleの公式文書では、上記の定義は以下の通りです.
おっしゃるように、ビューまたは分割はページのようにswifeできます.
実現可能なビュー.
RecyclerViewのようにAdapterで実現します.
簡単な例で実現しましょう.
まず、ViewPager用の分割を作成します.
位置に応じて表示するテキストのみを動的に置き換えます.
Fragmentは1つしかできませんでした.
レイアウトとアクティビティの作成
通常、swife起動が表示されます.
既存のViewPagerとは多くの違いがあります.
一番目立つのは RecyclerViewベースの RTL(Right to Left)は をサポートするは垂直スクロール をサポートする.
上位3種と言える.
垂直スクロールは次のように設定されています.
Layoutもcodeも設定できます.
TabLayoutと一緒に
Tab間の移動をSWIFOに移動することもできます.
この方法は後で単独で位置決めする.
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.
ViewPager?
Display Views or Fragments in a swipeable format.
参照用にビューまたはドラフトを表示
Googleの公式文書では、上記の定義は以下の通りです.
おっしゃるように、ビューまたは分割はページのようにswifeできます.
実現可能なビュー.
RecyclerViewのようにAdapterで実現します.
簡単な例で実現しましょう.
インプリメンテーション
まず、ViewPager用の分割を作成します.
位置に応じて表示するテキストのみを動的に置き換えます.
Fragmentは1つしかできませんでした.
class FirstFragment : Fragment() {
private var _binding : FragmentFirstBinding? = null
private val binding
get() = _binding!!
companion object {
fun newInstance(page : Int) : FirstFragment {
val fragment = FirstFragment()
val args = Bundle()
args.putInt("page", page)
fragment.arguments = args
return fragment
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentFirstBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
when(requireArguments().get("page")) {
0 -> binding.tvFragTitle.text = getString(R.string.str_first_fragment)
1 -> binding.tvFragTitle.text = getString(R.string.str_second_fragment)
2 -> binding.tvFragTitle.text = getString(R.string.str_third_fragment)
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
Adapterを作成しますclass MyPagerAdapter(fragmentActivity: FragmentActivity, private val count : Int) : FragmentStateAdapter(fragmentActivity) {
// Page(View or Fragment) 갯수를 반환
override fun getItemCount(): Int {
return count
}
// 각 position 별 Fragment를 반환
override fun createFragment(position: Int): Fragment {
return FirstFragment.newInstance(position)
}
}
Adapterは既に作成されており、適用するだけで終了します.レイアウトとアクティビティの作成
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.ViewPagerSampleActivity">
<androidx.viewpager2.widget.ViewPager2
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id = "@+id/viewPager2" />
</RelativeLayout>
class ViewPagerSampleActivity : AppCompatActivity() {
private lateinit var binding : ActivityViewPagerSampleBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityViewPagerSampleBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.viewPager2.adapter = MyPagerAdapter(this, 3)
}
}
構築後に実行します.通常、swife起動が表示されます.
ViewPager 1との違い
既存のViewPagerとは多くの違いがあります.
一番目立つのは
上位3種と言える.
垂直スクロールは次のように設定されています.
Layoutもcodeも設定できます.
// layout(xml)
android:orientation="vertical"
// Kotlin
binding.viewPager2.orientation = ViewPager2.ORIENTATION_VERTICAL
上記のように設定できます.TabLayoutにバインドすることもできます。
TabLayoutと一緒に
Tab間の移動をSWIFOに移動することもできます.
この方法は後で単独で位置決めする.
個人学習をベースに書いているからです.
情報が正しくない可能性があります.
知っていたら後で修正します
いつでもフィードバックを歓迎します.
読んでくれてありがとう.
Reference
この問題について(ViewPager 2の使用), 我々は、より多くの情報をここで見つけました https://velog.io/@jeep_chief_14/ViewPager2를-사용해보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol