Android tableLayout+viewpager+Fragment
时间: 2023-12-27 21:02:30 浏览: 89
TableLayout+ViewPager+Fragment滑动标题栏索引
Android TableLayout is a ViewGroup which displays the data in a tabular form. It is used to create a user interface with rows and columns similar to a spreadsheet. ViewPager is a View which allows the user to swipe left and right to navigate between pages. Fragments are reusable components which can be used to create dynamic user interfaces.
To create a TableLayout with ViewPager and Fragment, follow the below steps:
1. Create a new Android Studio project.
2. Add the required dependencies in the build.gradle file.
3. Create a new Fragment class for each tab.
4. Create a layout file for each Fragment.
5. Create a new FragmentPagerAdapter class to manage the Fragments.
6. Create a layout file for the Activity which will contain the TableLayout and ViewPager.
7. Add the TableLayout and ViewPager to the layout file.
8. Initialize the ViewPager in the Activity and set the FragmentPagerAdapter.
9. Create a new TabLayout and add it to the layout file.
10. Add the TabLayout to the ViewPager.
Example code:
1. Add the dependencies in the build.gradle file:
```
dependencies {
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}
```
2. Create a new Fragment class for each tab:
```
public class TabFragment extends Fragment {
private int tabPosition;
public TabFragment(int tabPosition) {
this.tabPosition = tabPosition;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_tab, container, false);
TextView textView = view.findViewById(R.id.tab_text);
textView.setText(getString(R.string.tab_text, tabPosition + 1));
return view;
}
}
```
3. Create a layout file for each Fragment:
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tab_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
```
4. Create a new FragmentPagerAdapter class to manage the Fragments:
```
public class TabAdapter extends FragmentStateAdapter {
public TabAdapter(FragmentActivity activity) {
super(activity);
}
@Override
public Fragment createFragment(int position) {
return new TabFragment(position);
}
@Override
public int getItemCount() {
return 3;
}
}
```
5. Create a layout file for the Activity which will contain the TableLayout and ViewPager:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
```
6. Initialize the ViewPager in the Activity and set the FragmentPagerAdapter:
```
public class MainActivity extends AppCompatActivity {
private ViewPager2 viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tabLayout = findViewById(R.id.tab_layout);
viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(new TabAdapter(this));
new TabLayoutMediator(tabLayout, viewPager,
(tab, position) -> tab.setText("Tab " + (position + 1))
).attach();
}
}
```
7. Create a new TabLayout and add it to the layout file:
```
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
```
8. Add the TabLayout to the ViewPager:
```
TabLayout tabLayout = findViewById(R.id.tab_layout);
viewPager.setAdapter(new TabAdapter(this));
new TabLayoutMediator(tabLayout, viewPager,
(tab, position) -> tab.setText("Tab " + (position + 1))
).attach();
```
This will create a TableLayout with ViewPager and Fragment. The user can swipe left and right to navigate between tabs. Each tab will display a Fragment with a TextView showing the tab number.
阅读全文