Loading res/xml/location_services.xml +5 −6 Original line number Diff line number Diff line Loading @@ -16,21 +16,20 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/location_services_preference_title"> <PreferenceCategory android:key="location_services" android:layout="@layout/preference_category_no_label" settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"/> android:title="@string/location_services_preference_title" settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.location.WifiScanningFragment" android:order="1000" android:key="location_services_wifi_scanning" android:title="@string/location_scanning_wifi_always_scanning_title" settings:controller="com.android.settings.location.LocationServicesWifiScanningPreferenceController"/> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.location.BluetoothScanningFragment" android:order="1001" android:key="location_services_bluetooth_scanning" android:title="@string/location_scanning_bluetooth_always_scanning_title" settings:controller="com.android.settings.location.LocationServicesBluetoothScanningPreferenceController"/> Loading res/xml/location_services_workprofile.xml +3 −8 Original line number Diff line number Diff line Loading @@ -16,12 +16,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/location_services_screen_title"> <PreferenceCategory android:title="@string/managed_profile_location_services" android:layout="@layout/preference_category_no_label" android:title="@string/location_services_screen_title" android:key="location_services_managed_profile" settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"/> settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"> </PreferenceScreen> src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java +44 −3 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ public abstract class ProfileSelectFragment extends DashboardFragment { private ViewGroup mContentView; private ViewPager2 mViewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Loading @@ -111,12 +113,21 @@ public abstract class ProfileSelectFragment extends DashboardFragment { final int selectedTab = getTabId(activity, getArguments()); final View tabContainer = mContentView.findViewById(R.id.tab_container); final ViewPager2 viewPager = tabContainer.findViewById(R.id.view_pager); viewPager.setAdapter(new ProfileSelectFragment.ViewPagerAdapter(this)); mViewPager = tabContainer.findViewById(R.id.view_pager); mViewPager.setAdapter(new ProfileSelectFragment.ViewPagerAdapter(this)); final TabLayout tabs = tabContainer.findViewById(R.id.tabs); new TabLayoutMediator(tabs, viewPager, new TabLayoutMediator(tabs, mViewPager, (tab, position) -> tab.setText(getPageTitle(position)) ).attach(); mViewPager.registerOnPageChangeCallback( new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { super.onPageSelected(position); updateHeight(position); } } ); tabContainer.setVisibility(View.VISIBLE); final TabLayout.Tab tab = tabs.getTabAt(selectedTab); tab.select(); Loading @@ -133,6 +144,36 @@ public abstract class ProfileSelectFragment extends DashboardFragment { return mContentView; } protected boolean forceUpdateHeight() { return false; } private void updateHeight(int position) { if (!forceUpdateHeight()) { return; } ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); if (adapter == null || adapter.getItemCount() <= position) { return; } Fragment fragment = adapter.createFragment(position); View newPage = fragment.getView(); if (newPage != null) { int viewWidth = View.MeasureSpec.makeMeasureSpec(newPage.getWidth(), View.MeasureSpec.EXACTLY); int viewHeight = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); newPage.measure(viewWidth, viewHeight); int currentHeight = mViewPager.getLayoutParams().height; int newHeight = newPage.getMeasuredHeight(); if (newHeight != 0 && currentHeight != newHeight) { ViewGroup.LayoutParams layoutParams = mViewPager.getLayoutParams(); layoutParams.height = newHeight; mViewPager.setLayoutParams(layoutParams); } } } @Override public int getMetricsCategory() { return METRICS_CATEGORY_UNKNOWN; Loading src/com/android/settings/dashboard/profileselector/ProfileSelectLocationServicesFragment.java +5 −0 Original line number Diff line number Diff line Loading @@ -50,4 +50,9 @@ public class ProfileSelectLocationServicesFragment extends ProfileSelectFragment protected int getPreferenceScreenResId() { return R.xml.location_services_header; } @Override protected boolean forceUpdateHeight() { return true; } } src/com/android/settings/location/LocationInjectedServicesForWorkPreferenceController.java +1 −4 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.content.Context; import android.os.UserHandle; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.widget.RestrictedAppPreference; Loading @@ -41,8 +40,6 @@ public class LocationInjectedServicesForWorkPreferenceController extends @Override protected void injectLocationServices(PreferenceScreen screen) { final PreferenceCategory categoryLocationServices = screen.findPreference(getPreferenceKey()); final Map<Integer, List<Preference>> prefs = getLocationServices(); for (Map.Entry<Integer, List<Preference>> entry : prefs.entrySet()) { for (Preference pref : entry.getValue()) { Loading @@ -51,7 +48,7 @@ public class LocationInjectedServicesForWorkPreferenceController extends } } if (entry.getKey() != UserHandle.myUserId()) { LocationSettings.addPreferencesSorted(entry.getValue(), categoryLocationServices); LocationSettings.addPreferencesSorted(entry.getValue(), screen); } } } Loading Loading
res/xml/location_services.xml +5 −6 Original line number Diff line number Diff line Loading @@ -16,21 +16,20 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/location_services_preference_title"> <PreferenceCategory android:key="location_services" android:layout="@layout/preference_category_no_label" settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"/> android:title="@string/location_services_preference_title" settings:controller="com.android.settings.location.LocationInjectedServicesPreferenceController"> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.location.WifiScanningFragment" android:order="1000" android:key="location_services_wifi_scanning" android:title="@string/location_scanning_wifi_always_scanning_title" settings:controller="com.android.settings.location.LocationServicesWifiScanningPreferenceController"/> <com.android.settingslib.RestrictedPreference android:fragment="com.android.settings.location.BluetoothScanningFragment" android:order="1001" android:key="location_services_bluetooth_scanning" android:title="@string/location_scanning_bluetooth_always_scanning_title" settings:controller="com.android.settings.location.LocationServicesBluetoothScanningPreferenceController"/> Loading
res/xml/location_services_workprofile.xml +3 −8 Original line number Diff line number Diff line Loading @@ -16,12 +16,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/location_services_screen_title"> <PreferenceCategory android:title="@string/managed_profile_location_services" android:layout="@layout/preference_category_no_label" android:title="@string/location_services_screen_title" android:key="location_services_managed_profile" settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"/> settings:controller="com.android.settings.location.LocationInjectedServicesForWorkPreferenceController"> </PreferenceScreen>
src/com/android/settings/dashboard/profileselector/ProfileSelectFragment.java +44 −3 Original line number Diff line number Diff line Loading @@ -99,6 +99,8 @@ public abstract class ProfileSelectFragment extends DashboardFragment { private ViewGroup mContentView; private ViewPager2 mViewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Loading @@ -111,12 +113,21 @@ public abstract class ProfileSelectFragment extends DashboardFragment { final int selectedTab = getTabId(activity, getArguments()); final View tabContainer = mContentView.findViewById(R.id.tab_container); final ViewPager2 viewPager = tabContainer.findViewById(R.id.view_pager); viewPager.setAdapter(new ProfileSelectFragment.ViewPagerAdapter(this)); mViewPager = tabContainer.findViewById(R.id.view_pager); mViewPager.setAdapter(new ProfileSelectFragment.ViewPagerAdapter(this)); final TabLayout tabs = tabContainer.findViewById(R.id.tabs); new TabLayoutMediator(tabs, viewPager, new TabLayoutMediator(tabs, mViewPager, (tab, position) -> tab.setText(getPageTitle(position)) ).attach(); mViewPager.registerOnPageChangeCallback( new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { super.onPageSelected(position); updateHeight(position); } } ); tabContainer.setVisibility(View.VISIBLE); final TabLayout.Tab tab = tabs.getTabAt(selectedTab); tab.select(); Loading @@ -133,6 +144,36 @@ public abstract class ProfileSelectFragment extends DashboardFragment { return mContentView; } protected boolean forceUpdateHeight() { return false; } private void updateHeight(int position) { if (!forceUpdateHeight()) { return; } ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); if (adapter == null || adapter.getItemCount() <= position) { return; } Fragment fragment = adapter.createFragment(position); View newPage = fragment.getView(); if (newPage != null) { int viewWidth = View.MeasureSpec.makeMeasureSpec(newPage.getWidth(), View.MeasureSpec.EXACTLY); int viewHeight = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); newPage.measure(viewWidth, viewHeight); int currentHeight = mViewPager.getLayoutParams().height; int newHeight = newPage.getMeasuredHeight(); if (newHeight != 0 && currentHeight != newHeight) { ViewGroup.LayoutParams layoutParams = mViewPager.getLayoutParams(); layoutParams.height = newHeight; mViewPager.setLayoutParams(layoutParams); } } } @Override public int getMetricsCategory() { return METRICS_CATEGORY_UNKNOWN; Loading
src/com/android/settings/dashboard/profileselector/ProfileSelectLocationServicesFragment.java +5 −0 Original line number Diff line number Diff line Loading @@ -50,4 +50,9 @@ public class ProfileSelectLocationServicesFragment extends ProfileSelectFragment protected int getPreferenceScreenResId() { return R.xml.location_services_header; } @Override protected boolean forceUpdateHeight() { return true; } }
src/com/android/settings/location/LocationInjectedServicesForWorkPreferenceController.java +1 −4 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.content.Context; import android.os.UserHandle; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.widget.RestrictedAppPreference; Loading @@ -41,8 +40,6 @@ public class LocationInjectedServicesForWorkPreferenceController extends @Override protected void injectLocationServices(PreferenceScreen screen) { final PreferenceCategory categoryLocationServices = screen.findPreference(getPreferenceKey()); final Map<Integer, List<Preference>> prefs = getLocationServices(); for (Map.Entry<Integer, List<Preference>> entry : prefs.entrySet()) { for (Preference pref : entry.getValue()) { Loading @@ -51,7 +48,7 @@ public class LocationInjectedServicesForWorkPreferenceController extends } } if (entry.getKey() != UserHandle.myUserId()) { LocationSettings.addPreferencesSorted(entry.getValue(), categoryLocationServices); LocationSettings.addPreferencesSorted(entry.getValue(), screen); } } } Loading