Fix double divider in Apps & notifications page

- The second divider is shown after we set a background to the pinned
  header.
- Fix it by simply hiding the pinned header instead of its inner views.

Fixes: 133231218
Test: robotest, visual
Change-Id: I53add6f01930299425ce96d23350f9f066e85145
This commit is contained in:
Jason Chiu
2019-06-05 17:31:31 +08:00
parent 64fec889df
commit cfa36dbaeb
3 changed files with 29 additions and 15 deletions

View File

@@ -113,7 +113,8 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
} }
}; };
private ViewGroup mPinnedHeaderFrameLayout; @VisibleForTesting
ViewGroup mPinnedHeaderFrameLayout;
private ViewGroup mButtonBar; private ViewGroup mButtonBar;
private LayoutPreference mHeader; private LayoutPreference mHeader;
@@ -186,6 +187,10 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
mPinnedHeaderFrameLayout.setVisibility(View.VISIBLE); mPinnedHeaderFrameLayout.setVisibility(View.VISIBLE);
} }
public void showPinnedHeader(boolean show) {
mPinnedHeaderFrameLayout.setVisibility(show ? View.VISIBLE : View.INVISIBLE);
}
@Override @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);

View File

@@ -44,8 +44,6 @@ public class AppAndNotificationDashboardFragment extends DashboardFragment
private static final String TAG = "AppAndNotifDashboard"; private static final String TAG = "AppAndNotifDashboard";
private View mProgressHeader;
private View mProgressAnimation;
private RecentAppStatsMixin mRecentAppStatsMixin; private RecentAppStatsMixin mRecentAppStatsMixin;
private RecentAppsPreferenceController mRecentAppsPreferenceController; private RecentAppsPreferenceController mRecentAppsPreferenceController;
private AllAppsInfoPreferenceController mAllAppsInfoPreferenceController; private AllAppsInfoPreferenceController mAllAppsInfoPreferenceController;
@@ -92,20 +90,19 @@ public class AppAndNotificationDashboardFragment extends DashboardFragment
@Override @Override
public void onViewCreated(View view, Bundle savedInstanceState) { public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
mProgressHeader = setPinnedHeaderView(R.layout.progress_header); setPinnedHeaderView(R.layout.progress_header);
mProgressAnimation = mProgressHeader.findViewById(R.id.progress_bar_animation); showPinnedHeader(false);
setLoadingEnabled(false);
} }
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
setLoadingEnabled(true); showPinnedHeader(true);
} }
@Override @Override
public void onReloadDataCompleted(@NonNull List<UsageStats> recentApps) { public void onReloadDataCompleted(@NonNull List<UsageStats> recentApps) {
setLoadingEnabled(false); showPinnedHeader(false);
if (!recentApps.isEmpty()) { if (!recentApps.isEmpty()) {
Utils.setActionBarShadowAnimation(getActivity(), getSettingsLifecycle(), Utils.setActionBarShadowAnimation(getActivity(), getSettingsLifecycle(),
getListView()); getListView());
@@ -117,13 +114,6 @@ public class AppAndNotificationDashboardFragment extends DashboardFragment
return buildPreferenceControllers(context); return buildPreferenceControllers(context);
} }
private void setLoadingEnabled(boolean enabled) {
if (mProgressHeader != null && mProgressAnimation != null) {
mProgressHeader.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE);
mProgressAnimation.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE);
}
}
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) { private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new EmergencyBroadcastPreferenceController(context, controllers.add(new EmergencyBroadcastPreferenceController(context,

View File

@@ -29,6 +29,7 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.FrameLayout;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -187,6 +188,24 @@ public class SettingsPreferenceFragmentTest {
verify(workOnlyCategory).setVisible(false); verify(workOnlyCategory).setVisible(false);
} }
@Test
public void showPinnedHeader_shouldBeVisible() {
mFragment.mPinnedHeaderFrameLayout = new FrameLayout(mContext);
mFragment.showPinnedHeader(true);
assertThat(mFragment.mPinnedHeaderFrameLayout.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test
public void hidePinnedHeader_shouldBeInvisible() {
mFragment.mPinnedHeaderFrameLayout = new FrameLayout(mContext);
mFragment.showPinnedHeader(false);
assertThat(mFragment.mPinnedHeaderFrameLayout.getVisibility()).isEqualTo(View.INVISIBLE);
}
public static class TestFragment extends SettingsPreferenceFragment { public static class TestFragment extends SettingsPreferenceFragment {
@Override @Override