[DO NOT MERGE] Resolver/Chooser - Window inset fixes

Resolver supports numerous layouts, with optional ViewGroups. Need to
make sure the window inset is applied to the correct view. If there is
a List present, add a footer so that the list scrolls underneath the
navbar.

Test: atest ResolverActivityTest
Bug: 145670872
Change-Id: I94652c5e0068436878a307701b5785f02060b8d6
This commit is contained in:
Matt Pietal
2019-12-06 13:55:54 -05:00
parent 3e57701bbd
commit 95ede7fb53
2 changed files with 23 additions and 3 deletions

View File

@@ -2562,6 +2562,12 @@ public class ChooserActivity extends ResolverActivity {
}
}
@Override
protected boolean shouldAddFooterView() {
// To accommodate for window insets
return true;
}
public class ChooserListAdapter extends ResolveListAdapter {
public static final int TARGET_BAD = -1;
public static final int TARGET_CALLER = 0;

View File

@@ -382,14 +382,30 @@ public class ResolverActivity extends Activity {
finish();
}
/**
* Numerous layouts are supported, each with optional ViewGroups.
* Make sure the inset gets added to the correct View, using
* a footer for Lists so it can properly scroll under the navbar.
*/
protected boolean shouldAddFooterView() {
if (useLayoutWithDefault()) return true;
View buttonBar = findViewById(R.id.button_bar);
if (buttonBar == null || buttonBar.getVisibility() == View.GONE) return true;
return false;
}
protected WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
mSystemWindowInsets = insets.getSystemWindowInsets();
mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
mSystemWindowInsets.right, 0);
resetButtonBar();
// Need extra padding so the list can fully scroll up
if (useLayoutWithDefault()) {
if (shouldAddFooterView()) {
if (mFooterSpacer == null) {
mFooterSpacer = new Space(getApplicationContext());
} else {
@@ -407,8 +423,6 @@ public class ResolverActivity extends Activity {
}
}
resetButtonBar();
return insets.consumeSystemWindowInsets();
}