diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 812e7b9..a6e3c99 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -63,7 +63,7 @@
   private final ImageView wifiIcon;
   private final ImageView assistedDialIcon;
   private final TextView phoneAccountView;
-  private final ImageView menuButton;
+  private final ImageView callButton;
   private final View callLogEntryRootView;
 
   private final Clock clock;
@@ -91,7 +91,7 @@
     wifiIcon = view.findViewById(R.id.wifi_icon);
     assistedDialIcon = view.findViewById(R.id.assisted_dial_icon);
     phoneAccountView = view.findViewById(R.id.phone_account);
-    menuButton = view.findViewById(R.id.menu_button);
+    callButton = view.findViewById(R.id.call_button);
 
     this.clock = clock;
     this.realtimeRowProcessor = realtimeRowProcessor;
@@ -139,8 +139,9 @@
     setFeatureIcons(row);
     setCallTypeIcon(row);
     setPhoneAccounts(row);
-    setOnClickListenerForRow(row);
-    setOnClickListenerForMenuButon(row);
+    setCallButon(row);
+
+    itemView.setOnClickListener(NewCallLogMenu.createOnClickListener(activity, row));
   }
 
   private void configA11yForRow(CoalescedRow row) {
@@ -286,21 +287,29 @@
     phoneAccountView.setVisibility(View.VISIBLE);
   }
 
-  private void setOnClickListenerForRow(CoalescedRow row) {
+  private void setCallButon(CoalescedRow row) {
     if (!PhoneNumberHelper.canPlaceCallsTo(
         row.getNumber().getNormalizedNumber(), row.getNumberPresentation())) {
-      itemView.setOnClickListener(null);
+      callButton.setVisibility(View.GONE);
       return;
     }
-    itemView.setOnClickListener(view -> CallLogRowActions.startCallForRow(activity, row));
-  }
 
-  private void setOnClickListenerForMenuButon(CoalescedRow row) {
-    menuButton.setOnClickListener(NewCallLogMenu.createOnClickListener(activity, row));
-    menuButton.setContentDescription(
-        TextUtils.expandTemplate(
-            activity.getResources().getText(R.string.a11y_new_call_log_entry_expand_menu),
-            CallLogEntryText.buildPrimaryText(activity, row)));
+    callButton.setVisibility(View.VISIBLE);
+    if ((row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO) {
+      callButton.setImageResource(R.drawable.quantum_ic_videocam_vd_theme_24);
+      callButton.setContentDescription(
+          TextUtils.expandTemplate(
+              activity.getResources().getText(R.string.a11y_new_call_log_entry_video_call),
+              CallLogEntryText.buildPrimaryText(activity, row)));
+    } else {
+      callButton.setImageResource(R.drawable.quantum_ic_call_vd_theme_24);
+      callButton.setContentDescription(
+          TextUtils.expandTemplate(
+              activity.getResources().getText(R.string.a11y_new_call_log_entry_voice_call),
+              CallLogEntryText.buildPrimaryText(activity, row)));
+    }
+
+    callButton.setOnClickListener(view -> CallLogRowActions.startCallForRow(activity, row));
   }
 
   private class RealtimeRowFutureCallback implements FutureCallback<CoalescedRow> {
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
index 5ce87ce..dba859f 100644
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
@@ -18,9 +18,11 @@
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/new_call_log_entry_root"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="72dp">
+    android:minHeight="72dp"
+    android:background="?android:attr/selectableItemBackground">
 
   <com.android.dialer.widget.ContactPhotoView
       android:id="@+id/contact_photo_view"
@@ -40,7 +42,7 @@
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:layout_toEndOf="@+id/contact_photo_view"
-      android:layout_toStartOf="@+id/menu_button"
+      android:layout_toStartOf="@+id/call_button"
       android:orientation="vertical"
       android:importantForAccessibility="noHideDescendants">
 
@@ -141,18 +143,17 @@
   </LinearLayout>
 
   <!--
-    The button to expand the bottom sheet for an entry.
+    The button to make a call.
     Its content description is set in Java code.
   -->
   <ImageView
-      android:id="@+id/menu_button"
+      android:id="@+id/call_button"
       android:layout_width="56dp"
       android:layout_height="72dp"
       android:layout_alignParentEnd="true"
       android:layout_centerVertical="true"
       android:background="?android:attr/selectableItemBackgroundBorderless"
       android:scaleType="center"
-      android:src="@drawable/quantum_ic_more_vert_vd_theme_24"
       android:tint="?colorIcon"
       tools:ignore="ContentDescription"/>
 </RelativeLayout>
diff --git a/java/com/android/dialer/calllog/ui/res/values/strings.xml b/java/com/android/dialer/calllog/ui/res/values/strings.xml
index b97a106..87d6a19 100644
--- a/java/com/android/dialer/calllog/ui/res/values/strings.xml
+++ b/java/com/android/dialer/calllog/ui/res/values/strings.xml
@@ -18,19 +18,28 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
 
   <!--
-    A string informing a11y users that activating a call log entry will place a call.
-    Note: the word "call" here is a verb.
+    A string informing a11y users that activating a call log entry will expand the menu
+    (a bottom sheet) for it.
     [CHAR LIMIT=NONE]
   -->
-  <string name="a11y_new_call_log_entry_tap_action">call</string>
+  <string name="a11y_new_call_log_entry_tap_action">expand menu</string>
 
   <!--
-    A string describing the menu button of a call log entry for a11y users.
-    An example will be read as "expand call log menu for Jane Smith".
+    A string describing the call button of a call log entry for a11y users.
+    An example will be read as "call Jane Smith".
     [CHAR LIMIT=NONE]
   -->
-  <string name="a11y_new_call_log_entry_expand_menu">
-    Expand call log menu for <xliff:g example="Jane Smith" id="primaryTextForEntry">^1</xliff:g>
+  <string name="a11y_new_call_log_entry_voice_call">
+    call <xliff:g example="Jane Smith" id="primaryTextForEntry">^1</xliff:g>
+  </string>
+
+  <!--
+    A string describing the call button of a call log entry for a11y users.
+    An example will be read as "make a video call to Jane Smith".
+    [CHAR LIMIT=NONE]
+  -->
+  <string name="a11y_new_call_log_entry_video_call">
+    make a video call to <xliff:g example="Jane Smith" id="primaryTextForEntry">^1</xliff:g>
   </string>
 
   <!-- Header in call log to group calls from the current day.  [CHAR LIMIT=30] -->
