Merge "Fix the action bar shows up problem" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
b9c1632a5f
@@ -152,7 +152,7 @@
|
||||
android:name=".SettingsApplication"
|
||||
android:label="@string/settings_label"
|
||||
android:icon="@drawable/ic_launcher_settings"
|
||||
android:theme="@style/Theme.Settings.NoActionBar"
|
||||
android:theme="@style/Theme.Settings"
|
||||
android:hardwareAccelerated="true"
|
||||
android:requiredForAllUsers="true"
|
||||
android:supportsRtl="true"
|
||||
|
@@ -1387,20 +1387,19 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
* @param activity the Activity need to setup the edge to edge feature.
|
||||
*/
|
||||
public static void setupEdgeToEdge(@NonNull FragmentActivity activity) {
|
||||
if (com.android.window.flags.Flags.enforceEdgeToEdge()) {
|
||||
ViewCompat.setOnApplyWindowInsetsListener(activity.findViewById(android.R.id.content),
|
||||
(v, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(
|
||||
WindowInsetsCompat.Type.systemBars()
|
||||
| WindowInsetsCompat.Type.ime());
|
||||
// Apply the insets paddings to the view.
|
||||
v.setPadding(insets.left, insets.top, insets.right, insets.bottom);
|
||||
ViewCompat.setOnApplyWindowInsetsListener(activity.findViewById(android.R.id.content),
|
||||
(v, windowInsets) -> {
|
||||
Insets insets = windowInsets.getInsets(
|
||||
WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
|
||||
int statusBarHeight = activity.getWindow().getDecorView().getRootWindowInsets()
|
||||
.getInsets(WindowInsetsCompat.Type.statusBars()).top;
|
||||
// Apply the insets paddings to the view.
|
||||
v.setPadding(insets.left, statusBarHeight, insets.right, insets.bottom);
|
||||
|
||||
// Return CONSUMED if you don't want the window insets to keep being
|
||||
// passed down to descendant views.
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
}
|
||||
// Return CONSUMED if you don't want the window insets to keep being
|
||||
// passed down to descendant views.
|
||||
return WindowInsetsCompat.CONSUMED;
|
||||
});
|
||||
}
|
||||
|
||||
private static FaceManager.RemovalCallback faceManagerRemovalCallback(int userId) {
|
||||
|
@@ -46,6 +46,7 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.core.CategoryMixin.CategoryHandler;
|
||||
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
||||
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
|
||||
import com.android.window.flags.Flags;
|
||||
|
||||
import com.google.android.material.appbar.AppBarLayout;
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||
@@ -92,8 +93,11 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
|
||||
Log.w(TAG, "Devices lock task mode pinned.");
|
||||
finish();
|
||||
}
|
||||
Utils.setupEdgeToEdge(this);
|
||||
final long startTime = System.currentTimeMillis();
|
||||
if (Flags.enforceEdgeToEdge()) {
|
||||
Utils.setupEdgeToEdge(this);
|
||||
hideInternalActionBar();
|
||||
}
|
||||
getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
|
||||
TextAppearanceConfig.setShouldLoadFontSynchronously(true);
|
||||
|
||||
@@ -291,4 +295,18 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
|
||||
}
|
||||
return intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_NONE);
|
||||
}
|
||||
|
||||
/**
|
||||
* This internal ActionBar will be appeared automatically when the
|
||||
* Utils.setupEdgeToEdge is invoked.
|
||||
*
|
||||
* @see Utils.setupEdgeToEdge
|
||||
*/
|
||||
private void hideInternalActionBar() {
|
||||
final View actionBarContainer =
|
||||
findViewById(com.android.internal.R.id.action_bar_container);
|
||||
if (actionBarContainer != null) {
|
||||
actionBarContainer.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,6 @@ import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -115,15 +114,6 @@ public class SettingsActivityTest {
|
||||
assertThat(((ListenerFragment) fragments.get(1)).mOnActivityResultCalled).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getActionBar_hasNoActionBar() {
|
||||
final SettingsActivity activity = Robolectric.buildActivity(SettingsActivity.class).get();
|
||||
|
||||
final ActionBar actionBar = activity.getActionBar();
|
||||
|
||||
assertThat(actionBar).isNull();
|
||||
}
|
||||
|
||||
public static class ListenerFragment extends Fragment implements OnActivityResultListener {
|
||||
|
||||
private boolean mOnActivityResultCalled;
|
||||
|
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.ActionBar;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.admin.DevicePolicyResourcesManager;
|
||||
import android.content.ComponentName;
|
||||
@@ -55,9 +56,11 @@ import android.os.storage.StorageManager;
|
||||
import android.os.storage.VolumeInfo;
|
||||
import android.util.IconDrawableFactory;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
|
||||
@@ -68,6 +71,7 @@ import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
@@ -266,6 +270,17 @@ public class UtilsTest {
|
||||
Utils.setActionBarShadowAnimation(null, null, null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setActionBarShadowAnimation_shouldSetElevationToZero() {
|
||||
final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
|
||||
final ActionBar actionBar = activity.getActionBar();
|
||||
|
||||
Utils.setActionBarShadowAnimation(activity, activity.getLifecycle(),
|
||||
new ScrollView(mContext));
|
||||
|
||||
assertThat(actionBar.getElevation()).isEqualTo(0.f);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSettingsIntelligence_IsSI_returnTrue() {
|
||||
final String siPackageName = mContext.getString(
|
||||
|
Reference in New Issue
Block a user