diff --git a/java/com/android/dialer/rtt/RttTranscriptActivity.java b/java/com/android/dialer/rtt/RttTranscriptActivity.java
index 18ae20c..574cdb2 100644
--- a/java/com/android/dialer/rtt/RttTranscriptActivity.java
+++ b/java/com/android/dialer/rtt/RttTranscriptActivity.java
@@ -20,7 +20,6 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
-import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -30,6 +29,7 @@
 import com.android.dialer.common.concurrent.UiListener;
 import com.android.dialer.glidephotomanager.PhotoInfo;
 import com.android.dialer.protos.ProtoParsers;
+import com.android.dialer.widget.DialerToolbar;
 
 /** Activity holds RTT transcript. */
 public class RttTranscriptActivity extends AppCompatActivity {
@@ -40,6 +40,7 @@
 
   private RttTranscriptAdapter adapter;
   private UiListener<RttTranscript> rttTranscriptUiListener;
+  private DialerToolbar toolbar;
 
   public static Intent getIntent(
       Context context, String transcriptId, String primaryText, PhotoInfo photoInfo) {
@@ -54,9 +55,9 @@
   protected void onCreate(@Nullable Bundle bundle) {
     super.onCreate(bundle);
     setContentView(R.layout.activity_rtt_transcript);
-    ActionBar actionBar = getSupportActionBar();
-    actionBar.setDisplayShowHomeEnabled(true);
-    actionBar.setDisplayHomeAsUpEnabled(true);
+    toolbar = findViewById(R.id.toolbar);
+    toolbar.setBackgroundColor(getColor(R.color.rtt_transcript_primary_color));
+    getWindow().setStatusBarColor(getColor(R.color.rtt_transcript_primary_color_dark));
 
     RecyclerView recyclerView = findViewById(R.id.rtt_recycler_view);
     LinearLayoutManager layoutManager = new LinearLayoutManager(this);
@@ -86,7 +87,7 @@
         });
 
     String primaryText = intent.getStringExtra(EXTRA_PRIMARY_TEXT);
-    getSupportActionBar().setTitle(primaryText);
+    toolbar.setTitle(primaryText);
 
     PhotoInfo photoInfo =
         ProtoParsers.getTrusted(intent, EXTRA_PHOTO_INFO, PhotoInfo.getDefaultInstance());
diff --git a/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml b/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml
index 628a793..772fde1 100644
--- a/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml
+++ b/java/com/android/dialer/rtt/res/layout/activity_rtt_transcript.xml
@@ -14,10 +14,16 @@
      limitations under the License.
 -->
 
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/rtt_transcript_background_color">
+    android:background="@color/rtt_transcript_background_color"
+    android:orientation="vertical">
+
+  <com.android.dialer.widget.DialerToolbar
+      android:id="@+id/toolbar"
+      android:layout_width="match_parent"
+      android:layout_height="wrap_content"/>
 
   <android.support.v7.widget.RecyclerView
       android:id="@+id/rtt_recycler_view"
@@ -27,4 +33,4 @@
       android:paddingBottom="16dp"
       android:clipToPadding="false"/>
 
-</FrameLayout>
+</LinearLayout>
diff --git a/java/com/android/dialer/rtt/res/values/colors.xml b/java/com/android/dialer/rtt/res/values/colors.xml
index 5de06f9..3b27a57 100644
--- a/java/com/android/dialer/rtt/res/values/colors.xml
+++ b/java/com/android/dialer/rtt/res/values/colors.xml
@@ -16,5 +16,6 @@
   -->
 <resources>
   <color name="rtt_transcript_primary_color">#37474F</color>
+  <color name="rtt_transcript_primary_color_dark">#263238</color>
   <color name="rtt_transcript_background_color">#ECEFF1</color>
 </resources>
\ No newline at end of file
