Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ab5a444 authored by Edgar Wang's avatar Edgar Wang Committed by Automerger Merge Worker
Browse files

Merge "Recalculate view's height when tab is selected" into tm-dev am: 1f633482 am: 47b4c865

parents 303c6f3c 47b4c865
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -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"/>
+3 −8
Original line number Diff line number Diff line
@@ -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>
+44 −3
Original line number Diff line number Diff line
@@ -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) {
@@ -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();
@@ -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;
+5 −0
Original line number Diff line number Diff line
@@ -50,4 +50,9 @@ public class ProfileSelectLocationServicesFragment extends ProfileSelectFragment
    protected int getPreferenceScreenResId() {
        return R.xml.location_services_header;
    }

    @Override
    protected boolean forceUpdateHeight() {
        return true;
    }
}
+1 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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()) {
@@ -51,7 +48,7 @@ public class LocationInjectedServicesForWorkPreferenceController extends
                }
            }
            if (entry.getKey() != UserHandle.myUserId()) {
                LocationSettings.addPreferencesSorted(entry.getValue(), categoryLocationServices);
                LocationSettings.addPreferencesSorted(entry.getValue(), screen);
            }
        }
    }
Loading