summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-03-08 04:19:06 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-03-08 04:19:06 +0000
commitd4454f4582e023f7e274b4545dea6ab8d001a1ce (patch)
tree47e904646f4eecf21ebbc894e4566e23caed7bad
parentddb2b33813c78757251518b68ea900f95e9060fc (diff)
parent48c121912f865be865e564a4d0a899988a100d37 (diff)
downloadsetupwizard-d4454f4582e023f7e274b4545dea6ab8d001a1ce.tar.gz
Merge "Add suwFooter attribute to GlifLayout"
-rw-r--r--library/main/res/values/attrs.xml3
-rw-r--r--library/main/src/com/android/setupwizardlib/GlifLayout.java19
-rw-r--r--library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java27
3 files changed, 48 insertions, 1 deletions
diff --git a/library/main/res/values/attrs.xml b/library/main/res/values/attrs.xml
index 42901c7..14799df 100644
--- a/library/main/res/values/attrs.xml
+++ b/library/main/res/values/attrs.xml
@@ -88,9 +88,10 @@
</declare-styleable>
<declare-styleable name="SuwGlifLayout">
- <attr name="suwColorPrimary" />
<attr name="suwBackgroundPatterned" format="boolean" />
<attr name="suwBackgroundBaseColor" format="color" />
+ <attr name="suwColorPrimary" />
+ <attr name="suwFooter" format="reference" />
</declare-styleable>
<declare-styleable name="SuwStatusBarBackgroundLayout">
diff --git a/library/main/src/com/android/setupwizardlib/GlifLayout.java b/library/main/src/com/android/setupwizardlib/GlifLayout.java
index 037a148..667d699 100644
--- a/library/main/src/com/android/setupwizardlib/GlifLayout.java
+++ b/library/main/src/com/android/setupwizardlib/GlifLayout.java
@@ -31,6 +31,7 @@ import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewStub;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.TextView;
@@ -123,6 +124,11 @@ public class GlifLayout extends TemplateLayout {
a.getBoolean(R.styleable.SuwGlifLayout_suwBackgroundPatterned, true);
setBackgroundPatterned(backgroundPatterned);
+ final int footer = a.getResourceId(R.styleable.SuwGlifLayout_suwFooter, 0);
+ if (footer != 0) {
+ inflateFooter(footer);
+ }
+
a.recycle();
}
@@ -142,6 +148,19 @@ public class GlifLayout extends TemplateLayout {
return super.findContainer(containerId);
}
+ /**
+ * Sets the footer of the layout, which is at the bottom of the content area outside the
+ * scrolling container. The footer can only be inflated once per layout.
+ *
+ * @param footer The layout to be inflated as footer.
+ * @return The root of the inflated footer view.
+ */
+ public View inflateFooter(@LayoutRes int footer) {
+ ViewStub footerStub = (ViewStub) findManagedViewById(R.id.suw_layout_footer);
+ footerStub.setLayoutResource(footer);
+ return footerStub.inflate();
+ }
+
public ScrollView getScrollView() {
final View view = findManagedViewById(R.id.suw_scroll_view);
return view instanceof ScrollView ? (ScrollView) view : null;
diff --git a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
index 6ab8259..8734f1d 100644
--- a/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
+++ b/library/test/robotest/src/com/android/setupwizardlib/GlifLayoutTest.java
@@ -49,6 +49,7 @@ import com.android.setupwizardlib.view.StatusBarBackgroundLayout;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;
@RunWith(SuwLibRobolectricTestRunner.class)
@@ -224,6 +225,32 @@ public class GlifLayoutTest {
layout.getMixin(ProgressBarMixin.class));
}
+ @Test
+ public void testInflateFooter() {
+ GlifLayout layout = new GlifLayout(mContext);
+
+ final View view = layout.inflateFooter(android.R.layout.simple_list_item_1);
+ assertEquals(android.R.id.text1, view.getId());
+ assertNotNull(layout.findViewById(android.R.id.text1));
+ }
+
+ @Config(qualifiers = "sw600dp")
+ @Test
+ public void testInflateFooterTablet() {
+ testInflateFooter();
+ }
+
+ @Test
+ public void testFooterXml() {
+ GlifLayout layout = new GlifLayout(
+ mContext,
+ Robolectric.buildAttributeSet()
+ .addAttribute(R.attr.suwFooter, "@android:layout/simple_list_item_1")
+ .build());
+
+ assertNotNull(layout.findViewById(android.R.id.text1));
+ }
+
private Drawable getPhoneBackground(GlifLayout layout) {
final StatusBarBackgroundLayout patternBg =
(StatusBarBackgroundLayout) layout.findManagedViewById(R.id.suw_pattern_bg);