diff options
| author | 2019-02-23 15:08:04 +0800 | |
|---|---|---|
| committer | 2019-02-26 13:13:38 +0800 | |
| commit | b052cfaf2639bab5a2cc922cb3ea6e5cf1b8dbfa (patch) | |
| tree | f6b65f84fda6b26dd01c65d301b1314e0f9bf65b | |
| parent | b953577b2784bebfc47ca8ad31fa55f2ea9808d1 (diff) | |
Fix janky on permission bar chart
In old design, the height of bar view is wrap_content.
So, it may have additional space after we normalized the
height for each bar view.
As a result, the button moves down when permission chart
gets filled.
For now, we fix the height which is max normalized height
for bar view. So, it won't have additional space while widget
is rendering the chart.
Test: See bar chart in privacy settings and permission dashboard.
Fixes: 123539793
Change-Id: Idb2619e21606248079715e055cb26ff366c71ad3
5 files changed, 9 insertions, 7 deletions
diff --git a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml index b053317b9de1..4bc68b333cc6 100644 --- a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml +++ b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml @@ -25,8 +25,7 @@ <View android:id="@+id/bar_view" android:layout_width="8dp" - android:layout_height="wrap_content" - android:background="?android:attr/colorAccent"/> + android:layout_height="wrap_content"/> <ImageView android:id="@+id/icon_view" diff --git a/packages/SettingsLib/BarChartPreference/res/values/styles.xml b/packages/SettingsLib/BarChartPreference/res/values/styles.xml index 647d0800fe82..4876cb6e1f28 100644 --- a/packages/SettingsLib/BarChartPreference/res/values/styles.xml +++ b/packages/SettingsLib/BarChartPreference/res/values/styles.xml @@ -18,7 +18,7 @@ <resources> <style name="BarViewStyle"> <item name="android:layout_width">0dp</item> - <item name="android:layout_height">wrap_content</item> + <item name="android:layout_height">226dp</item> <item name="android:layout_weight">1</item> <item name="android:layout_marginStart">8dp</item> <item name="android:layout_marginEnd">8dp</item> diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java index 3b87fcabb3fc..1003c974deb3 100644 --- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java +++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarChartPreference.java @@ -160,8 +160,11 @@ public class BarChartPreference extends Preference { // If the state is loading, we just show a blank view. if (mIsLoading) { + holder.itemView.setVisibility(View.INVISIBLE); return; } + holder.itemView.setVisibility(View.VISIBLE); + // We must show title of bar chart. bindChartTitleView(holder); diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java index 6bf61ae70312..3ef0235940b1 100644 --- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java +++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java @@ -89,7 +89,7 @@ public class BarView extends LinearLayout { private void init() { LayoutInflater.from(getContext()).inflate(R.layout.settings_bar_view, this); setOrientation(LinearLayout.VERTICAL); - setGravity(Gravity.CENTER); + setGravity(Gravity.CENTER | Gravity.BOTTOM); mBarView = findViewById(R.id.bar_view); mIcon = findViewById(R.id.icon_view); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java index 1080cf49e551..3acca2a7ef75 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java @@ -305,7 +305,7 @@ public class BarChartPreferenceTest { } @Test - public void onBindViewHolder_loadingStateIsTrue_shouldNotInitAnyView() { + public void onBindViewHolder_loadingStateIsTrue_shouldHideAllViews() { final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app); viewInfo.setClickListener(v -> { }); @@ -317,8 +317,7 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); - assertThat(TextUtils.isEmpty(mTitleView.getText())).isTrue(); - assertThat(TextUtils.isEmpty(mDetailsView.getText())).isTrue(); + assertThat(mHolder.itemView.getVisibility()).isEqualTo(View.INVISIBLE); } @Test @@ -334,6 +333,7 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); + assertThat(mHolder.itemView.getVisibility()).isEqualTo(View.VISIBLE); assertThat(TextUtils.isEmpty(mTitleView.getText())).isFalse(); assertThat(TextUtils.isEmpty(mDetailsView.getText())).isFalse(); } |