leanback: allow override the shadow width of GuidedActions list and
extends GuidedActionEditText from AppCompatEditText

Test: build and run support-leanback-demos

Change-Id: I2b748ab9e16f6d036065985f39f0c608bd04a32a
diff --git a/leanback/leanback/api/current.txt b/leanback/leanback/api/current.txt
index 91aec39..6712e06 100644
--- a/leanback/leanback/api/current.txt
+++ b/leanback/leanback/api/current.txt
@@ -1898,7 +1898,7 @@
     method public static androidx.leanback.widget.GuidedActionDiffCallback getInstance();
   }
 
-  public class GuidedActionEditText extends android.widget.EditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
+  public class GuidedActionEditText extends androidx.appcompat.widget.AppCompatEditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
     ctor public GuidedActionEditText(android.content.Context!);
     ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!);
     ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!, int);
diff --git a/leanback/leanback/api/restricted_current.txt b/leanback/leanback/api/restricted_current.txt
index 317fbfd..7c962a9e 100644
--- a/leanback/leanback/api/restricted_current.txt
+++ b/leanback/leanback/api/restricted_current.txt
@@ -2105,7 +2105,7 @@
     method public static androidx.leanback.widget.GuidedActionDiffCallback getInstance();
   }
 
-  public class GuidedActionEditText extends android.widget.EditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
+  public class GuidedActionEditText extends androidx.appcompat.widget.AppCompatEditText implements androidx.leanback.widget.GuidedActionAutofillSupport androidx.leanback.widget.ImeKeyMonitor {
     ctor public GuidedActionEditText(android.content.Context!);
     ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!);
     ctor public GuidedActionEditText(android.content.Context!, android.util.AttributeSet!, int);
diff --git a/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionEditText.java b/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionEditText.java
index f5272f6..4020298 100644
--- a/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionEditText.java
+++ b/leanback/leanback/src/main/java/androidx/leanback/widget/GuidedActionEditText.java
@@ -26,18 +26,17 @@
 import android.view.MotionEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.autofill.AutofillValue;
-import android.widget.EditText;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
+import androidx.appcompat.widget.AppCompatEditText;
 import androidx.core.widget.TextViewCompat;
 
 /**
  * A custom EditText that satisfies the IME key monitoring requirements of GuidedStepFragment.
  */
-@SuppressLint("AppCompatCustomView")
-public class GuidedActionEditText extends EditText implements ImeKeyMonitor,
+public class GuidedActionEditText extends AppCompatEditText implements ImeKeyMonitor,
         GuidedActionAutofillSupport {
 
     /**
@@ -109,7 +108,8 @@
     @Override
     public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
         super.onInitializeAccessibilityNodeInfo(info);
-        info.setClassName(isFocused() ? EditText.class.getName() : TextView.class.getName());
+        info.setClassName(isFocused() ?
+                AppCompatEditText.class.getName() : TextView.class.getName());
     }
 
     @Override
diff --git a/leanback/leanback/src/main/res/layout/lb_guidedstep_fragment.xml b/leanback/leanback/src/main/res/layout/lb_guidedstep_fragment.xml
index 766dbcc..9363a4d 100644
--- a/leanback/leanback/src/main/res/layout/lb_guidedstep_fragment.xml
+++ b/leanback/leanback/src/main/res/layout/lb_guidedstep_fragment.xml
@@ -52,7 +52,7 @@
                 android:orientation="horizontal"
                 android:clipToPadding="false"
                 android:clipChildren="false"
-                android:paddingStart="@dimen/lb_guidedactions_section_shadow_width"
+                android:paddingStart="?attr/guidedActionsShadowWidth"
                 android:layout_width="0dp"
                 android:layout_weight="?attr/guidedActionContentWidthWeight"
                 android:layout_height="match_parent" >
diff --git a/leanback/leanback/src/main/res/values/attrs.xml b/leanback/leanback/src/main/res/values/attrs.xml
index 0fc08a4..129cda8 100644
--- a/leanback/leanback/src/main/res/values/attrs.xml
+++ b/leanback/leanback/src/main/res/values/attrs.xml
@@ -375,6 +375,9 @@
              {@link androidx.leanback.R.dimen#lb_guidedactions_elevation}.-->
         <attr name="guidedActionsElevation" format="dimension|reference" />
 
+        <!-- Theme attribute for the left padding for showing shadow of GuidedActions. -->
+        <attr name="guidedActionsShadowWidth" format="dimension|reference" />
+
         <!-- Theme attribute for the background of GuidedActions. Default is
              {@link androidx.leanback.R.color#lb_guidedactions_background}.-->
         <attr name="guidedActionsBackground" format="reference" />
diff --git a/leanback/leanback/src/main/res/values/themes.xml b/leanback/leanback/src/main/res/values/themes.xml
index 8f9597a..2d564df 100644
--- a/leanback/leanback/src/main/res/values/themes.xml
+++ b/leanback/leanback/src/main/res/values/themes.xml
@@ -153,6 +153,7 @@
         <item name="guidanceDescriptionStyle">@style/Widget.Leanback.GuidanceDescriptionStyle</item>
 
         <item name="guidedActionsElevation">@dimen/lb_guidedactions_elevation</item>
+        <item name="guidedActionsShadowWidth">@dimen/lb_guidedactions_section_shadow_width</item>
         <item name="guidedActionsBackground">@color/lb_guidedactions_background</item>
         <item name="guidedActionsBackgroundDark">@color/lb_guidedactions_background_dark</item>
         <item name="guidedActionsListStyle">@style/Widget.Leanback.GuidedActionsListStyle</item>
diff --git a/leanback/leanback/src/main/res/values/themes_appcompat.xml b/leanback/leanback/src/main/res/values/themes_appcompat.xml
index b46e53c..f427184 100644
--- a/leanback/leanback/src/main/res/values/themes_appcompat.xml
+++ b/leanback/leanback/src/main/res/values/themes_appcompat.xml
@@ -157,6 +157,7 @@
         <item name="guidanceDescriptionStyle">@style/Widget.Leanback.GuidanceDescriptionStyle</item>
 
         <item name="guidedActionsElevation">@dimen/lb_guidedactions_elevation</item>
+        <item name="guidedActionsShadowWidth">@dimen/lb_guidedactions_section_shadow_width</item>
         <item name="guidedActionsBackground">@color/lb_guidedactions_background</item>
         <item name="guidedActionsBackgroundDark">@color/lb_guidedactions_background_dark</item>
         <item name="guidedActionsListStyle">@style/Widget.Leanback.GuidedActionsListStyle</item>