Merge "Move codes to gerrit for CollapsingToolbar" into tm-dev am: 2ee49c0f04

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17665879

Change-Id: I6ec2f6197ea414e25b6163d911742d92ed8ee0b9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-04-13 02:30:43 +00:00
committed by Automerger Merge Worker

View File

@@ -122,15 +122,66 @@ public class CollapsingCoordinatorLayout extends CoordinatorLayout {
} }
if (activity instanceof AppCompatActivity) { if (activity instanceof AppCompatActivity) {
initSupportToolbar((AppCompatActivity) activity); initSettingsStyleToolBar((SupportActionBarHost)
toolBar -> {
AppCompatActivity appCompatActivity = (AppCompatActivity) activity;
appCompatActivity.setSupportActionBar(toolBar);
return appCompatActivity.getSupportActionBar();
});
} else {
initSettingsStyleToolBar((ActionBarHost)
toolBar -> {
activity.setActionBar(toolBar);
return activity.getActionBar();
});
}
}
/**
* Initialize some attributes of {@link ActionBar}.
*
* @param actionBarHost Host Activity that is not AppCompat.
*/
public void initSettingsStyleToolBar(ActionBarHost actionBarHost) {
if (actionBarHost == null) {
Log.w(TAG, "initSettingsStyleToolBar: actionBarHost is null");
return; return;
} }
final Toolbar toolbar = findViewById(R.id.action_bar); final Toolbar toolbar = findViewById(R.id.action_bar);
activity.setActionBar(toolbar); final ActionBar actionBar = actionBarHost.setupActionBar(toolbar);
// Enable title and home button by default
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
}
}
/**
* Initialize some attributes of {@link ActionBar}.
*
* @param supportActionBarHost Host Activity that is AppCompat.
*/
public void initSettingsStyleToolBar(SupportActionBarHost supportActionBarHost) {
if (supportActionBarHost == null) {
Log.w(TAG, "initSettingsStyleToolBar: supportActionBarHost is null");
return;
}
if (mCollapsingToolbarLayout == null) {
return;
}
mCollapsingToolbarLayout.removeAllViews();
inflate(getContext(), R.layout.support_toolbar, mCollapsingToolbarLayout);
final androidx.appcompat.widget.Toolbar supportToolbar =
mCollapsingToolbarLayout.findViewById(R.id.support_action_bar);
final androidx.appcompat.app.ActionBar actionBar =
supportActionBarHost.setupSupportActionBar(supportToolbar);
// Enable title and home button by default // Enable title and home button by default
final ActionBar actionBar = activity.getActionBar();
if (actionBar != null) { if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true); actionBar.setHomeButtonEnabled(true);
@@ -156,20 +207,27 @@ public class CollapsingCoordinatorLayout extends CoordinatorLayout {
} }
} }
/** /** Returns an instance of collapsing toolbar. */
* Returns an instance of collapsing toolbar.
*/
public CollapsingToolbarLayout getCollapsingToolbarLayout() { public CollapsingToolbarLayout getCollapsingToolbarLayout() {
return mCollapsingToolbarLayout; return mCollapsingToolbarLayout;
} }
/** /** Return an instance of app bar. */
* Return an instance of app bar.
*/
public AppBarLayout getAppBarLayout() { public AppBarLayout getAppBarLayout() {
return mAppBarLayout; return mAppBarLayout;
} }
/** Returns the content frame layout. */
public View getContentFrameLayout() {
return findViewById(R.id.content_frame);
}
/** Returns the AppCompat Toolbar. */
public androidx.appcompat.widget.Toolbar getSupportToolbar() {
return (androidx.appcompat.widget.Toolbar)
mCollapsingToolbarLayout.findViewById(R.id.support_action_bar);
}
private void disableCollapsingToolbarLayoutScrollingBehavior() { private void disableCollapsingToolbarLayoutScrollingBehavior() {
if (mAppBarLayout == null) { if (mAppBarLayout == null) {
return; return;
@@ -187,25 +245,22 @@ public class CollapsingCoordinatorLayout extends CoordinatorLayout {
params.setBehavior(behavior); params.setBehavior(behavior);
} }
// This API is for supportActionBar of {@link AppCompatActivity} /** Interface to be implemented by a host Activity that is not AppCompat. */
private void initSupportToolbar(AppCompatActivity appCompatActivity) { public interface ActionBarHost {
if (mCollapsingToolbarLayout == null) { /**
return; * Sets a Toolbar as an actionBar and optionally returns an ActionBar represented by
* this toolbar if it should be used.
*/
@Nullable ActionBar setupActionBar(Toolbar toolbar);
} }
mCollapsingToolbarLayout.removeAllViews(); /** Interface to be implemented by a host Activity that is AppCompat. */
inflate(getContext(), R.layout.support_toolbar, mCollapsingToolbarLayout); public interface SupportActionBarHost {
final androidx.appcompat.widget.Toolbar supportToolbar = /**
mCollapsingToolbarLayout.findViewById(R.id.support_action_bar); * Sets a Toolbar as an actionBar and optionally returns an ActionBar represented by
* this toolbar if it should be used.
appCompatActivity.setSupportActionBar(supportToolbar); */
@Nullable androidx.appcompat.app.ActionBar setupSupportActionBar(
// Enable title and home button by default androidx.appcompat.widget.Toolbar toolbar);
final androidx.appcompat.app.ActionBar actionBar = appCompatActivity.getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayShowTitleEnabled(true);
}
} }
} }