From 7d7bdb2dc7230f04fce4793b8d3fabe9aed36bcd Mon Sep 17 00:00:00 2001 From: Xcreen Date: Tue, 2 Oct 2018 12:22:50 +0200 Subject: [PATCH] Added TabLayout/Viewpager to About-Fragment Removed Padding (should be in every single Fragment) --- .../net/xcreen/restsms/AboutFragment.java | 83 ++++++++++++++++++- .../net/xcreen/restsms/AboutMeFragment.java | 25 ++++++ app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/fragment_about.xml | 6 +- app/src/main/res/layout/fragment_about_me.xml | 14 ++++ app/src/main/res/layout/fragment_home.xml | 1 + app/src/main/res/layout/fragment_settings.xml | 1 + app/src/main/res/values/strings.xml | 4 + 8 files changed, 131 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/net/xcreen/restsms/AboutMeFragment.java create mode 100644 app/src/main/res/layout/fragment_about_me.xml diff --git a/app/src/main/java/net/xcreen/restsms/AboutFragment.java b/app/src/main/java/net/xcreen/restsms/AboutFragment.java index 8666024..57e6108 100644 --- a/app/src/main/java/net/xcreen/restsms/AboutFragment.java +++ b/app/src/main/java/net/xcreen/restsms/AboutFragment.java @@ -1,13 +1,25 @@ package net.xcreen.restsms; +import androidx.appcompat.widget.LinearLayoutCompat; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.viewpager.widget.ViewPager; + import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.tabs.TabLayout; + public class AboutFragment extends Fragment { + private TabLayout tabLayout; + private ViewPager viewPager; + private AppBarLayout mainAppBarLayout; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -15,7 +27,74 @@ public class AboutFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_about, container, false); + View rootView = inflater.inflate(R.layout.fragment_about, container, false); + + //Set Tabs + tabLayout = new TabLayout(getActivity()); + tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.about_about_me))); + tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.about_app_information))); + tabLayout.addTab(tabLayout.newTab().setText(getResources().getText(R.string.about_third_party_librarys))); + tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); + tabLayout.setBackgroundColor(getResources().getColor(R.color.colorDarkBlack, null)); + tabLayout.setTabTextColors(getResources().getColor(R.color.colorWhite, null), getResources().getColor(R.color.colorLightBlue, null)); + tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + viewPager.setCurrentItem(tab.getPosition()); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { } + + @Override + public void onTabReselected(TabLayout.Tab tab) { } + }); + + //Add TabLayout to the AppBarLayout + mainAppBarLayout = getActivity().findViewById(R.id.appbar_layout); + mainAppBarLayout.addView(tabLayout, new LinearLayoutCompat.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + + //Set Page-Adapter to ViewPager + FragmentPageAdapter pagerAdapter = new FragmentPageAdapter(getFragmentManager(), tabLayout.getTabCount()); + viewPager = rootView.findViewById(R.id.about_view_pager); + viewPager.setAdapter(pagerAdapter); + viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); + + return rootView; + } + + @Override + public void onStop() { + super.onStop(); + //Remove Tab-Layout + mainAppBarLayout.removeView(tabLayout); + } +} + +class FragmentPageAdapter extends FragmentStatePagerAdapter { + private int numberOfTabs; + + public FragmentPageAdapter(FragmentManager fm, int numberOfTabs) { + super(fm); + this.numberOfTabs = numberOfTabs; + } + + @Override + public Fragment getItem(int position) { + switch (position) { + case 0: + return new AboutMeFragment(); + case 1: + return new AboutMeFragment(); + case 2: + return new AboutMeFragment(); + default: + return null; + } + } + + @Override + public int getCount() { + return numberOfTabs; } } diff --git a/app/src/main/java/net/xcreen/restsms/AboutMeFragment.java b/app/src/main/java/net/xcreen/restsms/AboutMeFragment.java new file mode 100644 index 0000000..9112d84 --- /dev/null +++ b/app/src/main/java/net/xcreen/restsms/AboutMeFragment.java @@ -0,0 +1,25 @@ +package net.xcreen.restsms; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + + +public class AboutMeFragment extends Fragment { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_about_me, container, false); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 99edfbd..dd439bf 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -22,6 +22,7 @@ android:orientation="vertical"> @@ -39,8 +40,7 @@ android:id="@+id/main_framelayout" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/colorLightBlack" - android:padding="@dimen/fragment_padding"/> + android:background="@color/colorLightBlack" /> diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 27102ed..6b781b7 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -5,9 +5,9 @@ android:layout_height="match_parent" tools:context=".AboutFragment"> - + android:layout_height="match_parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about_me.xml b/app/src/main/res/layout/fragment_about_me.xml new file mode 100644 index 0000000..90282f7 --- /dev/null +++ b/app/src/main/res/layout/fragment_about_me.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 4b91293..3ea77b5 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:padding="@dimen/fragment_padding" tools:context=".HomeFragment"> Server failed to start! Sim-Card is missing or not ready to send sms! SMS-Permission is required to run the server! + + About Me + App-Information + Third-Party Librarys