diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 521d709..b8bd424 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1378,6 +1378,26 @@
          <item>@string/wifi_calling_mode_cellular_preferred_summary</item>
     </string-array>
 
+    <!-- Carrier variant of Enhaced 4G LTE Mode title.  [CHAR LIMIT=NONE] -->
+    <string-array name="enhanced_4g_lte_mode_title_variant">
+        <!-- 0: Default -->
+        <item>@string/enhanced_4g_lte_mode_title</item>
+        <!-- 1: Verizon -->
+        <item>@string/enhanced_4g_lte_mode_title_advanced_calling</item>
+        <!-- 2: All carriers who want 4G -->
+        <item>@string/enhanced_4g_lte_mode_title_4g_calling</item>
+    </string-array>
+
+    <!-- Carrier variant of Enhaced 4G LTE Mode summary.  [CHAR LIMIT=NONE] -->
+    <string-array name="enhanced_4g_lte_mode_sumary_variant">
+        <!-- 0: Default -->
+        <item>@string/enhanced_4g_lte_mode_summary</item>
+        <!-- 1: Verizon -->
+        <item>@string/enhanced_4g_lte_mode_summary</item>
+        <!-- 2: All carriers who want 4G -->
+        <item>@string/enhanced_4g_lte_mode_summary_4g_calling</item>
+    </string-array>
+
     <!-- Bluetooth icon foreground colors -->
     <integer-array name="bt_icon_fg_colors">
         <item>@color/bt_color_icon_1</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0986634..7c11ebf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6890,9 +6890,15 @@
     <!-- Access point names title.  [CHAR LIMIT=50] -->
     <string name="access_point_names">Access point names</string>
     <!-- Enhaced 4G LTE Mode title.  [CHAR LIMIT=50] -->
-    <string name="enhanced_4g_lte_mode_title">Enhanced 4G LTE Mode</string>
+    <string name="enhanced_4g_lte_mode_title">VoLTE</string>
+    <!-- Enhaced 4G LTE Mode title for carriers who want to show Advanced Calling.  [CHAR LIMIT=50] -->
+    <string name="enhanced_4g_lte_mode_title_advanced_calling">Advanced Calling</string>
+    <!-- Enhaced 4G LTE Mode title for carriers who want to show 4G Calling.  [CHAR LIMIT=50] -->
+    <string name="enhanced_4g_lte_mode_title_4g_calling">4G Calling</string>
     <!-- Enhaced 4G LTE Mode summary.  [CHAR LIMIT=100] -->
-    <string name="enhanced_4g_lte_mode_summary">Use LTE data to enhance voice and communications (Recommended)</string>
+    <string name="enhanced_4g_lte_mode_summary">Use LTE services to improve voice and other communications (recommended)</string>
+    <!-- Enhaced 4G LTE Mode summary for 4g calling.  [CHAR LIMIT=100] -->
+    <string name="enhanced_4g_lte_mode_summary_4g_calling">Use 4G services to improve voice and other communications (recommended)</string>
     <!-- Preferred network type title.  [CHAR LIMIT=50] -->
     <string name="preferred_network_type_title">Preferred network type</string>
     <!-- Preferred network type summary.  [CHAR LIMIT=100] -->
@@ -10481,8 +10487,6 @@
     <!-- Message informs the user that has no SIM card in personalized Settings [CHAR LIMIT=30] -->
     <string name="no_sim_card">No SIM card</string>
 
-    <!-- Carrier variant of Enhaced 4G LTE Mode title.  [CHAR LIMIT=50] -->
-    <string name="enhanced_4g_lte_mode_title_variant">Advanced Calling</string>
     <!-- The following strings are summaries for preferred network modes in Mobile network settings,
      and have a character limit of 100 -->
     <!-- WCDMA preferred [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java
index c510294..161c218 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.network.telephony;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.os.Looper;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
@@ -52,12 +53,18 @@
     ImsManager mImsManager;
     private PhoneCallStateListener mPhoneStateListener;
     private final List<On4gLteUpdateListener> m4gLteListeners;
+    private final CharSequence[] mVariantTitles;
+    private final CharSequence[] mVariantSumaries;
 
     public Enhanced4gLtePreferenceController(Context context, String key) {
         super(context, key);
         mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
         m4gLteListeners = new ArrayList<>();
         mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
+        mVariantTitles = context.getResources()
+                .getTextArray(R.array.enhanced_4g_lte_mode_title_variant);
+        mVariantSumaries = context.getResources()
+                .getTextArray(R.array.enhanced_4g_lte_mode_sumary_variant);
     }
 
     @Override
@@ -94,12 +101,20 @@
     public void updateState(Preference preference) {
         super.updateState(preference);
         final SwitchPreference switchPreference = (SwitchPreference) preference;
-        final boolean useVariant4glteTitle = mCarrierConfig.getInt(
-                CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT) != 0;
-        int enhanced4glteModeTitleId = useVariant4glteTitle ?
-                R.string.enhanced_4g_lte_mode_title_variant :
-                R.string.enhanced_4g_lte_mode_title;
-        switchPreference.setTitle(enhanced4glteModeTitleId);
+        final int variant4glteTitleIndex = mCarrierConfig.getInt(
+                CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT);
+
+        // Default index 0 indicates the default title/sumary string
+        CharSequence enhanced4glteModeTitle = mVariantTitles[0];
+        CharSequence enhanced4glteModeSummary = mVariantSumaries[0];
+        if (variant4glteTitleIndex >= 0 && variant4glteTitleIndex < mVariantTitles.length) {
+            enhanced4glteModeTitle = mVariantTitles[variant4glteTitleIndex];
+        }
+        if (variant4glteTitleIndex >= 0 && variant4glteTitleIndex < mVariantSumaries.length) {
+            enhanced4glteModeSummary = mVariantSumaries[variant4glteTitleIndex];
+        }
+        switchPreference.setTitle(enhanced4glteModeTitle);
+        switchPreference.setSummary(enhanced4glteModeSummary);
         switchPreference.setEnabled(is4gLtePrefEnabled());
         switchPreference.setChecked(mImsManager.isEnhanced4gLteModeSettingEnabledByUser()
                 && mImsManager.isNonTtyOrTtyOnVolteEnabled());
diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java
index 78ed4b5..9957cde 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java
@@ -102,13 +102,27 @@
     }
 
     @Test
-    public void updateState_variant4gLte_useVariantTitle() {
-        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
-
+    public void updateState_variant4gLte_useVariantTitleAndSummary() {
+        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 0);
         mController.updateState(mPreference);
-
         assertThat(mPreference.getTitle()).isEqualTo(
-                mContext.getString(R.string.enhanced_4g_lte_mode_title_variant));
+                mContext.getString(R.string.enhanced_4g_lte_mode_title));
+        assertThat(mPreference.getSummary()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_summary));
+
+        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
+        mController.updateState(mPreference);
+        assertThat(mPreference.getTitle()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_title_advanced_calling));
+        assertThat(mPreference.getSummary()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_summary));
+
+        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 2);
+        mController.updateState(mPreference);
+        assertThat(mPreference.getTitle()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_title_4g_calling));
+        assertThat(mPreference.getSummary()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_summary_4g_calling));
     }
 
     @Test
