diff --git a/res/layout-land/nfc_payment_empty.xml b/res/layout-land/nfc_payment_empty.xml
new file mode 100644
index 00000000000..842792cdb7d
--- /dev/null
+++ b/res/layout-land/nfc_payment_empty.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/nfc/PaymentSettings.java b/src/com/android/settings/nfc/PaymentSettings.java
index 560ddbf1cd4..bbe5f29d9ae 100644
--- a/src/com/android/settings/nfc/PaymentSettings.java
+++ b/src/com/android/settings/nfc/PaymentSettings.java
@@ -30,6 +30,10 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -70,10 +74,11 @@ public class PaymentSettings extends DashboardFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
-
- View emptyView = getActivity().getLayoutInflater().inflate(
- R.layout.nfc_payment_empty, null, false);
- ((ViewGroup) view.findViewById(android.R.id.list_container)).addView(emptyView);
+ if (isShowEmptyImage(getPreferenceScreen())) {
+ View emptyView = getActivity().getLayoutInflater().inflate(
+ R.layout.nfc_payment_empty, null, false);
+ ((ViewGroup) view.findViewById(android.R.id.list_container)).addView(emptyView);
+ }
}
@Override
@@ -97,6 +102,17 @@ public class PaymentSettings extends DashboardFragment {
menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER);
}
+ @VisibleForTesting
+ boolean isShowEmptyImage(PreferenceScreen screen) {
+ for (int i = 0; i < screen.getPreferenceCount(); i++) {
+ final Preference preference = screen.getPreference(i);
+ if(preference.isVisible()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.nfc_payment_settings) {
diff --git a/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java b/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java
index 1293ee4d0ff..513da65e3cb 100644
--- a/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java
@@ -29,6 +29,10 @@ import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceManager;
+import androidx.preference.PreferenceScreen;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -113,6 +117,34 @@ public class PaymentSettingsTest {
assertThat(niks).containsAllOf(FOREGROUND_KEY, PAYMENT_KEY, PAYMENT_SCREEN_KEY);
}
+ @Test
+ public void isShowEmptyImage_hasVisiblePreference_returnFalse() {
+ final PaymentSettings paymentSettings = new PaymentSettings();
+ final PreferenceManager preferenceManager = new PreferenceManager(mContext);
+ final PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+ final Preference preference1 = new Preference(mContext);
+ screen.addPreference(preference1);
+ final Preference preference2 = new Preference(mContext);
+ screen.addPreference(preference2);
+
+ assertThat(paymentSettings.isShowEmptyImage(screen)).isFalse();
+ }
+
+ @Test
+ public void isShowEmptyImage_hasNoVisiblePreference_returnTrue() {
+ final PaymentSettings paymentSettings = new PaymentSettings();
+ final PreferenceManager preferenceManager = new PreferenceManager(mContext);
+ final PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
+ final Preference preference1 = new Preference(mContext);
+ preference1.setVisible(false);
+ screen.addPreference(preference1);
+ final Preference preference2 = new Preference(mContext);
+ screen.addPreference(preference2);
+ preference2.setVisible(false);
+
+ assertThat(paymentSettings.isShowEmptyImage(screen)).isTrue();
+ }
+
@Implements(PaymentBackend.class)
public static class ShadowPaymentBackend {
private ArrayList mAppInfos;