Skip to content

Commit 0821f64

Browse files
author
ge78fug
committed
Added bottom main-tabs feature
1 parent b6bf0ff commit 0821f64

4 files changed

Lines changed: 50 additions & 0 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import android.content.Context;
44
import android.os.Bundle;
55
import android.util.Log;
6+
import android.util.TypedValue;
67
import android.view.LayoutInflater;
78
import android.view.Menu;
89
import android.view.MenuInflater;
910
import android.view.MenuItem;
1011
import android.view.View;
1112
import android.view.ViewGroup;
13+
import android.widget.RelativeLayout;
1214

1315
import androidx.annotation.NonNull;
1416
import androidx.annotation.Nullable;
@@ -17,6 +19,7 @@
1719
import androidx.fragment.app.FragmentManager;
1820
import androidx.fragment.app.FragmentStatePagerAdapterMenuWorkaround;
1921
import androidx.preference.PreferenceManager;
22+
import androidx.viewpager.widget.ViewPager;
2023

2124
import com.google.android.material.tabs.TabLayout;
2225

@@ -29,6 +32,7 @@
2932
import org.schabi.newpipe.settings.tabs.TabsManager;
3033
import org.schabi.newpipe.util.NavigationHelper;
3134
import org.schabi.newpipe.util.ServiceHelper;
35+
import org.schabi.newpipe.views.ScrollableTabLayout;
3236

3337
import java.util.ArrayList;
3438
import java.util.List;
@@ -106,6 +110,7 @@ public void onResume() {
106110
} else if (hasTabsChanged) {
107111
setupTabs();
108112
}
113+
updateTabsPosition();
109114
}
110115

111116
@Override
@@ -189,6 +194,38 @@ private void updateTabsIconAndDescription() {
189194
private void updateTitleForTab(final int tabPosition) {
190195
setTitle(tabsList.get(tabPosition).getTabName(requireContext()));
191196
}
197+
private void updateTabsPosition() {
198+
final ScrollableTabLayout tabLayout = binding.mainTabLayout;
199+
final ViewPager viewPager = binding.pager;
200+
final RelativeLayout.LayoutParams tabParams = (RelativeLayout.LayoutParams)
201+
tabLayout.getLayoutParams();
202+
final RelativeLayout.LayoutParams pagerParams = (RelativeLayout.LayoutParams)
203+
viewPager.getLayoutParams();
204+
if (PreferenceManager.getDefaultSharedPreferences(requireContext())
205+
.getBoolean(getString(R.string.main_tabs_position_key), false)) {
206+
tabParams.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
207+
tabParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
208+
pagerParams.removeRule(RelativeLayout.BELOW);
209+
pagerParams.addRule(RelativeLayout.ABOVE, R.id.main_tab_layout);
210+
tabLayout.setSelectedTabIndicatorGravity(TabLayout.INDICATOR_GRAVITY_TOP);
211+
final TypedValue typedValue = new TypedValue();
212+
getContext().getTheme().resolveAttribute(R.attr.colorPrimary, typedValue,
213+
true);
214+
getActivity().getWindow().setNavigationBarColor(typedValue.data);
215+
} else {
216+
tabParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
217+
tabParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
218+
pagerParams.removeRule(RelativeLayout.ABOVE);
219+
pagerParams.addRule(RelativeLayout.BELOW, R.id.main_tab_layout);
220+
tabLayout.setSelectedTabIndicatorGravity(TabLayout.INDICATOR_GRAVITY_BOTTOM);
221+
final TypedValue typedValue = new TypedValue();
222+
getContext().getTheme().resolveAttribute(R.attr.colorSecondary, typedValue,
223+
true);
224+
getActivity().getWindow().setNavigationBarColor(typedValue.data);
225+
}
226+
tabLayout.setLayoutParams(tabParams);
227+
viewPager.setLayoutParams(pagerParams);
228+
}
192229

193230
@Override
194231
public void onTabSelected(final TabLayout.Tab selectedTab) {

app/src/main/res/values/settings_keys.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,9 @@
241241
<string name="caption_settings_key">caption_settings_key</string>
242242
<string name="caption_user_set_key">caption_user_set_key</string>
243243

244+
<!-- Main-Tabs Position -->
245+
<string name="main_tabs_position_key">main_tabs_position</string>
246+
244247
<!-- Content & History -->
245248
<string name="show_search_suggestions_key">show_search_suggestions</string>
246249
<string name="show_local_search_suggestions_key">show_local_search_suggestions</string>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@
213213
<string name="delete_search_history_alert">Delete entire search history?</string>
214214
<string name="search_history_deleted">Search history deleted</string>
215215
<string name="fast_mode">Fast mode</string>
216+
<string name="main_tabs_position_summary">Change the position of the main tabs</string>
217+
<string name="main_tabs_position_title">Main Tabs Position</string>
216218
<!-- error strings -->
217219
<string name="general_error">Error</string>
218220
<string name="download_to_sdcard_error_title">External storage unavailable</string>

app/src/main/res/xml/appearance_settings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,12 @@
6666
app:singleLineTitle="false"
6767
app:iconSpaceReserved="false" />
6868

69+
<SwitchPreferenceCompat
70+
android:defaultValue="false"
71+
android:key="@string/main_tabs_position_key"
72+
android:summary="@string/main_tabs_position_summary"
73+
android:title="@string/main_tabs_position_title"
74+
app:singleLineTitle="false"
75+
app:iconSpaceReserved="false" />
76+
6977
</PreferenceScreen>

0 commit comments

Comments
 (0)