Sponsor

example of Tab Layout in Android Tutorial Develop Android app by SoftwareTechIT

In this example we will learn about the tab layout in android app development Tutorial 

this example have the TabLayout example  


kkk

MainActivity.java file


package com.example.tabactivity; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import com.google.android.material.tabs.TabLayout; import androidx.viewpager.widget.ViewPager; import androidx.appcompat.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.example.tabactivity.ui.main.SectionsPagerAdapter; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager()); ViewPager viewPager = findViewById(R.id.view_pager); viewPager.setAdapter(sectionsPagerAdapter); TabLayout tabs = findViewById(R.id.tabs); tabs.setupWithViewPager(viewPager); FloatingActionButton fab = findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } }

PageViewModel.java file


package com.example.tabactivity.ui.main; import androidx.arch.core.util.Function; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Transformations; import androidx.lifecycle.ViewModel; public class PageViewModel extends ViewModel { private MutableLiveData<Integer> mIndex = new MutableLiveData<>(); private LiveData<String> mText = Transformations.map(mIndex, new Function<Integer, String>() { @Override public String apply(Integer input) { return "Hello world from section: " + input; } }); public void setIndex(int index) { mIndex.setValue(index); } public LiveData<String> getText() { return mText; } 
}Copy
PlaceholderFramgment.java file:

package com.example.tabactivity.ui.main;


import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;


import androidx.annotation.Nullable;

import androidx.annotation.NonNull;

import androidx.fragment.app.Fragment;

import androidx.lifecycle.Observer;

import androidx.lifecycle.ViewModelProviders;


import com.example.tabactivity.R;


/**

 * A placeholder fragment containing a simple view.

 */

public class PlaceholderFragment extends Fragment {


    private static final String ARG_SECTION_NUMBER = "section_number";


    private PageViewModel pageViewModel;


    public static PlaceholderFragment newInstance(int index) {

        PlaceholderFragment fragment = new PlaceholderFragment();

        Bundle bundle = new Bundle();

        bundle.putInt(ARG_SECTION_NUMBER, index);

        fragment.setArguments(bundle);

        return fragment;

    }


    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        pageViewModel = ViewModelProviders.of(this).get(PageViewModel.class);

        int index = 1;

        if (getArguments() != null) {

            index = getArguments().getInt(ARG_SECTION_NUMBER);

        }

        pageViewModel.setIndex(index);

    }


    @Override

    public View onCreateView(

            @NonNull LayoutInflater inflater, ViewGroup container,

            Bundle savedInstanceState) {

        View root = inflater.inflate(R.layout.fragment_main, container, false);

        final TextView textView = root.findViewById(R.id.section_label);

        pageViewModel.getText().observe(this, new Observer<String>() {

            @Override

            public void onChanged(@Nullable String s) {

                textView.setText(s);

            }

        });

        return root;

    }

}

SectionPageAdapter.java file

package com.example.tabactivity.ui.main;


import android.content.Context;


import androidx.annotation.Nullable;

import androidx.annotation.StringRes;

import androidx.fragment.app.Fragment;

import androidx.fragment.app.FragmentManager;

import androidx.fragment.app.FragmentPagerAdapter;


import com.example.tabactivity.R;


/**

 * A [FragmentPagerAdapter] that returns a fragment corresponding to

 * one of the sections/tabs/pages.

 */

public class SectionsPagerAdapter extends FragmentPagerAdapter {


    @StringRes

    private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2};

    private final Context mContext;


    public SectionsPagerAdapter(Context context, FragmentManager fm) {

        super(fm);

        mContext = context;

    }


    @Override

    public Fragment getItem(int position) {

        // getItem is called to instantiate the fragment for the given page.

        // Return a PlaceholderFragment (defined as a static inner class below).

        return PlaceholderFragment.newInstance(position + 1);

    }


    @Nullable

    @Override

    public CharSequence getPageTitle(int position) {

        return mContext.getResources().getString(TAB_TITLES[position]);

    }


    @Override

    public int getCount() {

        // Show 2 total pages.

        return 2;

    }

}

activity_main.xml file 

<?xml version="1.0" encoding="utf-8"?>

<androidx.coordinatorlayout.widget.CoordinatorLayout 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=".MainActivity">


    <com.google.android.material.appbar.AppBarLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:theme="@style/AppTheme.AppBarOverlay">


        <TextView

            android:id="@+id/title"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:gravity="center"

            android:minHeight="?actionBarSize"

            android:padding="@dimen/appbar_padding"

            android:text="@string/app_name"

            android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title" />


        <com.google.android.material.tabs.TabLayout

            android:id="@+id/tabs"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:background="?attr/colorPrimary" />

    </com.google.android.material.appbar.AppBarLayout>


    <androidx.viewpager.widget.ViewPager

        android:id="@+id/view_pager"

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        app:layout_behavior="@string/appbar_scrolling_view_behavior" />


    <com.google.android.material.floatingactionbutton.FloatingActionButton

        android:id="@+id/fab"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_gravity="bottom|end"

        android:layout_margin="@dimen/fab_margin"

        app:srcCompat="@android:drawable/ic_dialog_email" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

fragment_main.xml file


<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/constraintLayout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.main.PlaceholderFragment"> <TextView android:id="@+id/section_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/activity_horizontal_margin" android:layout_marginTop="@dimen/activity_vertical_margin" android:layout_marginEnd="@dimen/activity_horizontal_margin" android:layout_marginBottom="@dimen/activity_vertical_margin" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="@+id/constraintLayout" tools:layout_constraintLeft_creator="1" tools:layout_constraintTop_creator="1" />  
</androidx.constraintlayout.widget.ConstraintLayout>Copy

Post a Comment

0 Comments