Add an empty text when there is no bar view
Bar chart only shows title and empty text in this BarChartPreference when user didn't add any bar view for bar chart. Test: visual and robotest Change-Id: I66f7fc5376cd7f996f3cbe7a36455127c4e4d81b Fixes: 117623686
This commit is contained in:
@@ -33,33 +33,49 @@
|
||||
android:textAppearance="@style/BarChart.Text.HeaderTitle"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bar_views_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center|bottom">
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view1"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#FA7B17"/>
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view2"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#F439A0"/>
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view3"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#A142F4"/>
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view4"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#24C1E0"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center|bottom">
|
||||
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view1"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#FA7B17"/>
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view2"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#F439A0"/>
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view3"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#A142F4"/>
|
||||
<com.android.settingslib.widget.BarView
|
||||
android:id="@+id/bar_view4"
|
||||
style="@style/BarViewStyle"
|
||||
settings:barColor="#24C1E0"/>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/bar_chart_details"
|
||||
style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:gravity="center"/>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/bar_chart_details"
|
||||
style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:gravity="center"/>
|
||||
<TextView
|
||||
android:id="@+id/empty_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/settings_bar_view_max_height"
|
||||
android:gravity="center"
|
||||
android:visibility="gone"
|
||||
android:textAppearance="@style/BarChart.Text.Summary"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -140,7 +140,17 @@ public class BarChartPreference extends Preference {
|
||||
holder.setDividerAllowedAbove(true);
|
||||
holder.setDividerAllowedBelow(true);
|
||||
|
||||
// We must show title of bar chart.
|
||||
bindChartTitleView(holder);
|
||||
|
||||
final BarViewInfo[] barViewInfos = mBarChartInfo.getBarViewInfos();
|
||||
// If there is no any bar view, we just show an empty text.
|
||||
if (barViewInfos == null || barViewInfos.length == 0) {
|
||||
setEmptyViewVisible(holder, true /* visible */);
|
||||
return;
|
||||
}
|
||||
setEmptyViewVisible(holder, false /* visible */);
|
||||
|
||||
bindChartDetailsView(holder);
|
||||
updateBarChart(holder);
|
||||
}
|
||||
@@ -206,4 +216,16 @@ public class BarChartPreference extends Preference {
|
||||
barView.setNormalizedHeight(barView.getHeight() * unit);
|
||||
}
|
||||
}
|
||||
|
||||
private void setEmptyViewVisible(PreferenceViewHolder holder, boolean visible) {
|
||||
final View barViewsContainer = holder.findViewById(R.id.bar_views_container);
|
||||
final TextView emptyView = (TextView) holder.findViewById(R.id.empty_view);
|
||||
final int emptyTextRes = mBarChartInfo.getEmptyText();
|
||||
|
||||
if (emptyTextRes != 0) {
|
||||
emptyView.setText(emptyTextRes);
|
||||
}
|
||||
emptyView.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
barViewsContainer.setVisibility(visible ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,11 +88,31 @@ public class BarChartPreferenceTest {
|
||||
assertThat(titleView.getText()).isEqualTo(mContext.getText(R.string.debug_app));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBarChart_noBarViewSet_shouldShowTitleAndEmptyView() {
|
||||
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
|
||||
.setTitle(R.string.debug_app)
|
||||
.setEmptyText(R.string.debug_app)
|
||||
.build();
|
||||
|
||||
mPreference.initializeBarChart(barChartInfo);
|
||||
// We don't add any bar view yet.
|
||||
mPreference.onBindViewHolder(mHolder);
|
||||
|
||||
assertThat(mBarChartView.findViewById(R.id.bar_chart_title).getVisibility())
|
||||
.isEqualTo(View.VISIBLE);
|
||||
assertThat(mBarChartView.findViewById(R.id.empty_view).getVisibility())
|
||||
.isEqualTo(View.VISIBLE);
|
||||
assertThat(mBarChartView.findViewById(R.id.bar_views_container).getVisibility())
|
||||
.isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeBarChart_detailsSet_shouldShowBarChartDetailsView() {
|
||||
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
|
||||
.setTitle(R.string.debug_app)
|
||||
.setDetails(R.string.debug_app)
|
||||
.addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
|
||||
.build();
|
||||
|
||||
mPreference.initializeBarChart(barChartInfo);
|
||||
@@ -107,6 +127,7 @@ public class BarChartPreferenceTest {
|
||||
// We don't call BarChartInfo.Builder#setDetails yet.
|
||||
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
|
||||
.setTitle(R.string.debug_app)
|
||||
.addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
|
||||
.build();
|
||||
|
||||
mPreference.initializeBarChart(barChartInfo);
|
||||
@@ -122,6 +143,7 @@ public class BarChartPreferenceTest {
|
||||
.setDetails(R.string.debug_app)
|
||||
.setDetailsOnClickListener(v -> {
|
||||
})
|
||||
.addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
|
||||
.build();
|
||||
|
||||
mPreference.initializeBarChart(barChartInfo);
|
||||
|
||||
Reference in New Issue
Block a user