Allow setting DividerInsetEnd

- Added XML attribute suwDividerInsetEnd, and replaced
  suwDividerInset with suwDividerInsetStart.
- Modified the themes so that the divider insets are set
  automatically. If the activity uses GLIF (v1) or material, and the
  list does not have icons, it should set
    app:suwDividerInsetStart="?attr/suwDividerInsetStartNoIcon"
  in the Glif[Recycler/List]Layout

Test: ./gradlew connectedAndroidTest test
Bug: 37677772
Change-Id: Ia4cb9954dd7e3c59cbc72db8937989557689061b
This commit is contained in:
Maurice Lam 2017-04-25 19:16:09 -07:00
parent c9abaa5461
commit 6011b35dea
19 changed files with 421 additions and 53 deletions

View file

@ -38,6 +38,9 @@
<item name="listPreferredItemPaddingLeft">?attr/suwMarginSides</item>
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwCardBackground">@drawable/suw_card_bg_dark</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_text_divider_inset</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle</item>
<item name="suwListItemIconColor">@color/suw_list_item_icon_color_dark</item>
@ -65,6 +68,9 @@
<item name="listPreferredItemPaddingLeft">?attr/suwMarginSides</item>
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwCardBackground">@drawable/suw_card_bg_light</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_text_divider_inset</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle</item>
<item name="suwListItemIconColor">@color/suw_list_item_icon_color_light</item>
@ -93,7 +99,9 @@
<item name="listPreferredItemPaddingLeft">?attr/suwMarginSides</item>
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwColorPrimary">?attr/colorPrimary</item>
<item name="suwDividerInset">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_glif_text_divider_inset</item>
<item name="suwGlifHeaderGravity">start</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description.Glif</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle.GlifDescription</item>
@ -124,7 +132,9 @@
<item name="listPreferredItemPaddingLeft">?attr/suwMarginSides</item>
<item name="listPreferredItemPaddingRight">?attr/suwMarginSides</item>
<item name="suwColorPrimary">?attr/colorPrimary</item>
<item name="suwDividerInset">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_glif_text_divider_inset</item>
<item name="suwGlifHeaderGravity">start</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description.Glif</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle.GlifDescription</item>

View file

@ -32,6 +32,8 @@
<dimen name="suw_header_title_size">34sp</dimen>
<!-- Items -->
<dimen name="suw_items_icon_divider_inset">88dp</dimen>
<dimen name="suw_items_text_divider_inset">40dp</dimen>
<dimen name="suw_items_glif_icon_divider_inset">88dp</dimen>
<dimen name="suw_items_glif_text_divider_inset">40dp</dimen>

View file

@ -72,7 +72,11 @@
<!-- Custom view attributes -->
<attr name="suwColorPrimary" format="color" />
<attr name="suwHeader" format="reference" />
<!-- Deprecated. Use suwDividerInsetStart and suwDividerInsetEnd instead -->
<attr name="suwDividerInset" format="dimension|reference" />
<attr name="suwDividerInsetEnd" format="dimension|reference" />
<attr name="suwDividerInsetStart" format="dimension|reference" />
<attr name="suwDividerInsetStartNoIcon" format="dimension|reference" />
<attr name="suwItemDescriptionStyle" format="reference" />
<attr name="suwItemDescriptionTitleStyle" format="reference" />
@ -160,6 +164,8 @@
<declare-styleable name="SuwListMixin">
<attr name="android:entries" />
<attr name="suwDividerInset" />
<attr name="suwDividerInsetEnd" />
<attr name="suwDividerInsetStart" />
</declare-styleable>
</resources>

View file

@ -24,6 +24,9 @@
<item name="suwBackgroundBaseColor">?android:attr/colorBackground</item>
<item name="suwBackgroundPatterned">false</item>
<item name="suwDividerInsetEnd">?attr/suwMarginSides</item>
<item name="suwDividerInsetStart">?attr/suwMarginSides</item>
<item name="suwDividerInsetStartNoIcon">?attr/suwMarginSides</item>
<item name="suwGlifHeaderGravity">center_horizontal</item>
<item name="suwScrollIndicators">top|bottom</item>
</style>
@ -36,6 +39,9 @@
<item name="suwBackgroundBaseColor">?android:attr/colorBackground</item>
<item name="suwBackgroundPatterned">false</item>
<item name="suwDividerInsetEnd">?attr/suwMarginSides</item>
<item name="suwDividerInsetStart">?attr/suwMarginSides</item>
<item name="suwDividerInsetStartNoIcon">?attr/suwMarginSides</item>
<item name="suwGlifHeaderGravity">center_horizontal</item>
<item name="suwScrollIndicators">top|bottom</item>
</style>

View file

@ -113,26 +113,50 @@ public class GlifListLayout extends GlifLayout {
}
/**
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and inset it {@code inset} pixels to the right (or left in RTL layouts).
*
* @param inset The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_glif_icon_divider_inset} or
* {@code @dimen/suw_items_glif_text_divider_inset}.
*
* @see ListMixin#setDividerInset(int)
* @deprecated Use {@link #setDividerInsets(int, int)} instead.
*/
@Deprecated
public void setDividerInset(int inset) {
mListMixin.setDividerInset(inset);
}
/**
* @see ListMixin#getDividerInset()
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and apply insets to it.
*
* @param start The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_glif_icon_divider_inset} or
* {@code @dimen/suw_items_glif_text_divider_inset}.
* @param end The number of pixels to inset on the "end" side of the list divider.
*
* @see ListMixin#setDividerInsets(int, int)
*/
public void setDividerInsets(int start, int end) {
mListMixin.setDividerInsets(start, end);
}
/**
* @deprecated Use {@link #getDividerInsetStart()} instead.
*/
@Deprecated
public int getDividerInset() {
return mListMixin.getDividerInset();
}
/**
* @see ListMixin#getDividerInsetStart()
*/
public int getDividerInsetStart() {
return mListMixin.getDividerInsetStart();
}
/**
* @see ListMixin#getDividerInsetEnd()
*/
public int getDividerInsetEnd() {
return mListMixin.getDividerInsetEnd();
}
/**
* @see ListMixin#getDivider()
*/

View file

@ -113,18 +113,50 @@ public class SetupWizardListLayout extends SetupWizardLayout {
* {@code @dimen/suw_items_text_divider_inset}.
*
* @see ListMixin#setDividerInset(int)
* @deprecated Use {@link #setDividerInsets(int, int)} instead.
*/
@Deprecated
public void setDividerInset(int inset) {
mListMixin.setDividerInset(inset);
}
/**
* @see ListMixin#getDividerInset()
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and apply insets to it.
*
* @param start The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_icon_divider_inset} or
* {@code @dimen/suw_items_text_divider_inset}.
* @param end The number of pixels to inset on the "end" side of the list divider.
*
* @see ListMixin#setDividerInsets(int, int)
*/
public void setDividerInsets(int start, int end) {
mListMixin.setDividerInsets(start, end);
}
/**
* @deprecated Use {@link #getDividerInsetStart()} instead.
*/
@Deprecated
public int getDividerInset() {
return mListMixin.getDividerInset();
}
/**
* @see ListMixin#getDividerInsetStart()
*/
public int getDividerInsetStart() {
return mListMixin.getDividerInsetStart();
}
/**
* @see ListMixin#getDividerInsetEnd()
*/
public int getDividerInsetEnd() {
return mListMixin.getDividerInsetEnd();
}
/**
* @see ListMixin#getDivider()
*/

View file

@ -49,7 +49,9 @@ public class ListMixin implements Mixin {
private Drawable mDivider;
private Drawable mDefaultDivider;
private int mDividerInset;
private int mDividerInsetStart;
private int mDividerInsetEnd;
/**
* @param layout The layout this mixin belongs to.
@ -69,8 +71,16 @@ public class ListMixin implements Mixin {
setAdapter(new ItemAdapter(inflated));
}
int dividerInset =
a.getDimensionPixelSize(R.styleable.SuwListMixin_suwDividerInset, 0);
setDividerInset(dividerInset);
a.getDimensionPixelSize(R.styleable.SuwListMixin_suwDividerInset, -1);
if (dividerInset != -1) {
setDividerInset(dividerInset);
} else {
int dividerInsetStart =
a.getDimensionPixelSize(R.styleable.SuwListMixin_suwDividerInsetStart, 0);
int dividerInsetEnd =
a.getDimensionPixelSize(R.styleable.SuwListMixin_suwDividerInsetEnd, 0);
setDividerInsets(dividerInsetStart, dividerInsetEnd);
}
a.recycle();
}
@ -135,24 +145,50 @@ public class ListMixin implements Mixin {
}
}
/**
* @deprecated Use {@link #setDividerInsets(int, int)} instead.
*/
@Deprecated
public void setDividerInset(int inset) {
setDividerInsets(inset, 0);
}
/**
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and inset it {@code inset} pixels to the right (or left in RTL layouts).
* theme and apply insets to it.
*
* @param inset The number of pixels to inset on the "start" side of the list divider. Typically
* @param start The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_glif_icon_divider_inset} or
* {@code @dimen/suw_items_glif_text_divider_inset}.
* @param end The number of pixels to inset on the "end" side of the list divider.
*/
public void setDividerInset(int inset) {
mDividerInset = inset;
public void setDividerInsets(int start, int end) {
mDividerInsetStart = start;
mDividerInsetEnd = end;
updateDivider();
}
/**
* @return The number of pixels inset on the start side of the divider.
* @deprecated This is the same as {@link #getDividerInsetStart()}. Use that instead.
*/
@Deprecated
public int getDividerInset() {
return mDividerInset;
return getDividerInsetStart();
}
/**
* @return The number of pixels inset on the start side of the divider.
*/
public int getDividerInsetStart() {
return mDividerInsetStart;
}
/**
* @return The number of pixels inset on the end side of the divider.
*/
public int getDividerInsetEnd() {
return mDividerInsetEnd;
}
private void updateDivider() {
@ -170,9 +206,9 @@ public class ListMixin implements Mixin {
}
mDivider = DrawableLayoutDirectionHelper.createRelativeInsetDrawable(
mDefaultDivider,
mDividerInset /* start */,
mDividerInsetStart /* start */,
0 /* top */,
0 /* end */,
mDividerInsetEnd /* end */,
0 /* bottom */,
mTemplateLayout);
listView.setDivider(mDivider);

View file

@ -41,6 +41,9 @@
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="suwCardBackground">@drawable/suw_card_bg</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_text_divider_inset</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle</item>
<item name="suwListItemIconColor">@color/suw_list_item_icon_color_dark</item>
@ -65,6 +68,9 @@
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="suwCardBackground">@drawable/suw_card_bg</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_text_divider_inset</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle</item>
<item name="suwListItemIconColor">@color/suw_list_item_icon_color_light</item>
@ -92,7 +98,9 @@
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="suwColorPrimary">?android:attr/colorPrimary</item>
<item name="suwDividerInset">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_glif_text_divider_inset</item>
<item name="suwGlifHeaderGravity">start</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description.Glif</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle.GlifDescription</item>
@ -120,7 +128,9 @@
<item name="android:windowSoftInputMode">adjustResize</item>
<item name="suwColorPrimary">?android:attr/colorPrimary</item>
<item name="suwDividerInset">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetEnd">0dp</item>
<item name="suwDividerInsetStart">@dimen/suw_items_glif_icon_divider_inset</item>
<item name="suwDividerInsetStartNoIcon">@dimen/suw_items_glif_text_divider_inset</item>
<item name="suwGlifHeaderGravity">start</item>
<item name="suwItemDescriptionStyle">@style/SuwItemContainer.Description.Glif</item>
<item name="suwItemDescriptionTitleStyle">@style/SuwItemTitle.GlifDescription</item>

View file

@ -28,6 +28,8 @@
<declare-styleable name="SuwRecyclerMixin">
<attr name="android:entries" />
<attr name="suwDividerInset" />
<attr name="suwDividerInsetEnd" />
<attr name="suwDividerInsetStart" />
<attr name="suwHasStableIds" />
</declare-styleable>

View file

@ -36,7 +36,7 @@ import java.lang.annotation.RetentionPolicy;
* default, and the behavior of whether the divider is shown can be customized by subclassing
* {@link com.android.setupwizardlib.DividerItemDecoration.DividedViewHolder}.
*
* <p>Modified from v14 PreferenceFragment.DividerDecoration, added with inset capabilities.
* <p>Modified from v14 PreferenceFragment.DividerDecoration.
*/
public class DividerItemDecoration extends RecyclerView.ItemDecoration {

View file

@ -147,19 +147,41 @@ public class GlifRecyclerLayout extends GlifLayout {
}
/**
* @see RecyclerMixin#setDividerInset(int)
* @deprecated Use {@link #setDividerInsets(int, int)} instead.
*/
@Deprecated
public void setDividerInset(int inset) {
mRecyclerMixin.setDividerInset(inset);
}
/**
* @see RecyclerMixin#getDividerInset()
* @see RecyclerMixin#setDividerInset(int)
*/
public void setDividerInsets(int start, int end) {
mRecyclerMixin.setDividerInsets(start, end);
}
/**
* @deprecated Use {@link #getDividerInsetStart()} instead.
*/
public int getDividerInset() {
return mRecyclerMixin.getDividerInset();
}
/**
* @see RecyclerMixin#getDividerInsetStart()
*/
public int getDividerInsetStart() {
return mRecyclerMixin.getDividerInsetStart();
}
/**
* @see RecyclerMixin#getDividerInsetEnd()
*/
public int getDividerInsetEnd() {
return mRecyclerMixin.getDividerInsetEnd();
}
/**
* @see RecyclerMixin#getDivider()
*/

View file

@ -139,26 +139,50 @@ public class SetupWizardRecyclerLayout extends SetupWizardLayout {
}
/**
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and inset it {@code inset} pixels to the right (or left in RTL layouts).
*
* @param inset The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_icon_divider_inset} or
* {@code @dimen/suw_items_text_divider_inset}.
*
* @see RecyclerMixin#setDividerInset(int)
* @deprecated Use {@link #setDividerInsets(int, int)} instead.
*/
@Deprecated
public void setDividerInset(int inset) {
mRecyclerMixin.setDividerInset(inset);
}
/**
* @see RecyclerMixin#getDividerInset()
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and apply insets to it.
*
* @param start The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_icon_divider_inset} or
* {@code @dimen/suw_items_text_divider_inset}.
* @param end The number of pixels to inset on the "end" side of the list divider.
*
* @see RecyclerMixin#setDividerInsets(int, int)
*/
public void setDividerInsets(int start, int end) {
mRecyclerMixin.setDividerInsets(start, end);
}
/**
* @deprecated Use {@link #getDividerInsetStart()} instead.
*/
@Deprecated
public int getDividerInset() {
return mRecyclerMixin.getDividerInset();
}
/**
* @see RecyclerMixin#getDividerInsetStart()
*/
public int getDividerInsetStart() {
return mRecyclerMixin.getDividerInsetStart();
}
/**
* @see RecyclerMixin#getDividerInsetEnd()
*/
public int getDividerInsetEnd() {
return mRecyclerMixin.getDividerInsetEnd();
}
/**
* @see RecyclerMixin#getDivider()
*/

View file

@ -63,7 +63,9 @@ public class RecyclerMixin implements Mixin {
private Drawable mDefaultDivider;
private Drawable mDivider;
private int mDividerInset;
private int mDividerInsetStart;
private int mDividerInsetEnd;
/**
* Creates the RecyclerMixin. Unlike typical mixins which are created in the constructor, this
@ -112,8 +114,17 @@ public class RecyclerMixin implements Mixin {
setAdapter(adapter);
}
int dividerInset =
a.getDimensionPixelSize(R.styleable.SuwRecyclerMixin_suwDividerInset, 0);
setDividerInset(dividerInset);
a.getDimensionPixelSize(R.styleable.SuwRecyclerMixin_suwDividerInset, -1);
if (dividerInset != -1) {
setDividerInset(dividerInset);
} else {
int dividerInsetStart =
a.getDimensionPixelSize(R.styleable.SuwRecyclerMixin_suwDividerInsetStart, 0);
int dividerInsetEnd =
a.getDimensionPixelSize(R.styleable.SuwRecyclerMixin_suwDividerInsetEnd, 0);
setDividerInsets(dividerInsetStart, dividerInsetEnd);
}
a.recycle();
}
@ -173,24 +184,50 @@ public class RecyclerMixin implements Mixin {
mRecyclerView.setAdapter(adapter);
}
/**
* @deprecated Use {@link #setDividerInsets(int, int)} instead.
*/
@Deprecated
public void setDividerInset(int inset) {
setDividerInsets(inset, 0);
}
/**
* Sets the start inset of the divider. This will use the default divider drawable set in the
* theme and inset it {@code inset} pixels to the right (or left in RTL layouts).
* theme and apply insets to it.
*
* @param inset The number of pixels to inset on the "start" side of the list divider. Typically
* @param start The number of pixels to inset on the "start" side of the list divider. Typically
* this will be either {@code @dimen/suw_items_glif_icon_divider_inset} or
* {@code @dimen/suw_items_glif_text_divider_inset}.
* @param end The number of pixels to inset on the "end" side of the list divider.
*/
public void setDividerInset(int inset) {
mDividerInset = inset;
public void setDividerInsets(int start, int end) {
mDividerInsetStart = start;
mDividerInsetEnd = end;
updateDivider();
}
/**
* @return The number of pixels inset on the start side of the divider.
* @deprecated This is the same as {@link #getDividerInsetStart()}. Use that instead.
*/
@Deprecated
public int getDividerInset() {
return mDividerInset;
return getDividerInsetStart();
}
/**
* @return The number of pixels inset on the start side of the divider.
*/
public int getDividerInsetStart() {
return mDividerInsetStart;
}
/**
* @return The number of pixels inset on the end side of the divider.
*/
public int getDividerInsetEnd() {
return mDividerInsetEnd;
}
private void updateDivider() {
@ -204,9 +241,9 @@ public class RecyclerMixin implements Mixin {
}
mDivider = DrawableLayoutDirectionHelper.createRelativeInsetDrawable(
mDefaultDivider,
mDividerInset /* start */,
mDividerInsetStart /* start */,
0 /* top */,
0 /* end */,
mDividerInsetEnd /* end */,
0 /* bottom */,
mTemplateLayout);
mDividerDecoration.setDivider(mDivider);

View file

@ -96,7 +96,7 @@ public class RecyclerMixinTest {
}
@Test
public void testDividerInset() {
public void testDividerLegacyInset() {
RecyclerMixin mixin = new RecyclerMixin(mTemplateLayout, mRecyclerView);
mixin.setDividerInset(123);
@ -111,7 +111,23 @@ public class RecyclerMixinTest {
}
@Test
public void testDividerInsetRtl() {
public void testDividerInsets() {
RecyclerMixin mixin = new RecyclerMixin(mTemplateLayout, mRecyclerView);
mixin.setDividerInsets(123, 456);
assertEquals(123, mixin.getDividerInsetStart());
assertEquals(456, mixin.getDividerInsetEnd());
final Drawable divider = mixin.getDivider();
InsetDrawable insetDrawable = (InsetDrawable) divider;
Rect rect = new Rect();
insetDrawable.getPadding(rect);
assertEquals(new Rect(123, 0, 456, 0), rect);
}
@Test
public void testDividerInsetLegacyRtl() {
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
doReturn(View.LAYOUT_DIRECTION_RTL).when(mTemplateLayout).getLayoutDirection();
@ -129,4 +145,25 @@ public class RecyclerMixinTest {
}
// else the test passes
}
@Test
public void testDividerInsetsRtl() {
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
doReturn(View.LAYOUT_DIRECTION_RTL).when(mTemplateLayout).getLayoutDirection();
RecyclerMixin mixin = new RecyclerMixin(mTemplateLayout, mRecyclerView);
mixin.setDividerInsets(123, 456);
assertEquals(123, mixin.getDividerInsetStart());
assertEquals(456, mixin.getDividerInsetEnd());
final Drawable divider = mixin.getDivider();
InsetDrawable insetDrawable = (InsetDrawable) divider;
Rect rect = new Rect();
insetDrawable.getPadding(rect);
assertEquals(new Rect(456, 0, 123, 0), rect);
}
// else the test passes
}
}

View file

@ -105,7 +105,7 @@ public class GlifRecyclerLayoutTest {
}
@Test
public void testDividerInset() {
public void testDividerInsetLegacy() {
GlifRecyclerLayout layout = new GlifRecyclerLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
@ -119,6 +119,22 @@ public class GlifRecyclerLayoutTest {
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
@Test
public void testDividerInsets() {
GlifRecyclerLayout layout = new GlifRecyclerLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
assertRecyclerTemplateInflated(layout);
layout.setDividerInsets(10, 15);
assertEquals("Divider inset start should be 10", 10, layout.getDividerInsetStart());
assertEquals("Divider inset end should be 15", 15, layout.getDividerInsetEnd());
final Drawable divider = layout.getDivider();
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
@Test
public void testTemplateWithNoRecyclerView() {
try {

View file

@ -106,7 +106,7 @@ public class SetupWizardRecyclerLayoutTest {
}
@Test
public void testDividerInset() {
public void testDividerInsetLegacy() {
SetupWizardRecyclerLayout layout = new SetupWizardRecyclerLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
@ -120,6 +120,22 @@ public class SetupWizardRecyclerLayoutTest {
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
@Test
public void testDividerInsets() {
SetupWizardRecyclerLayout layout = new SetupWizardRecyclerLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
assertRecyclerTemplateInflated(layout);
layout.setDividerInsets(10, 15);
assertEquals("Divider inset start should be 10", 10, layout.getDividerInsetStart());
assertEquals("Divider inset end should be 15", 15, layout.getDividerInsetEnd());
final Drawable divider = layout.getDivider();
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
@Test
public void testTemplateWithNoRecyclerView() {
try {

View file

@ -101,7 +101,7 @@ public class ListMixinTest {
}
@Test
public void testDividerInset() {
public void testDividerInsetLegacy() {
ListMixin mixin = new ListMixin(mTemplateLayout, null, 0);
mixin.setDividerInset(123);
@ -116,7 +116,23 @@ public class ListMixinTest {
}
@Test
public void testDividerInsetRtl() {
public void testDividerInsets() {
ListMixin mixin = new ListMixin(mTemplateLayout, null, 0);
mixin.setDividerInsets(123, 456);
assertEquals(123, mixin.getDividerInsetStart());
assertEquals(456, mixin.getDividerInsetEnd());
final Drawable divider = mListView.getDivider();
InsetDrawable insetDrawable = (InsetDrawable) divider;
Rect rect = new Rect();
insetDrawable.getPadding(rect);
assertEquals(new Rect(123, 0, 456, 0), rect);
}
@Test
public void testDividerInsetLegacyRtl() {
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
doReturn(View.LAYOUT_DIRECTION_RTL).when(mTemplateLayout).getLayoutDirection();
@ -135,6 +151,27 @@ public class ListMixinTest {
// else the test passes
}
@Test
public void testDividerInsetsRtl() {
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
doReturn(View.LAYOUT_DIRECTION_RTL).when(mTemplateLayout).getLayoutDirection();
ListMixin mixin = new ListMixin(mTemplateLayout, null, 0);
mixin.setDividerInsets(123, 456);
assertEquals(123, mixin.getDividerInsetStart());
assertEquals(456, mixin.getDividerInsetEnd());
final Drawable divider = mListView.getDivider();
InsetDrawable insetDrawable = (InsetDrawable) divider;
Rect rect = new Rect();
insetDrawable.getPadding(rect);
assertEquals(new Rect(456, 0, 123, 0), rect);
}
// else the test passes
}
@Test
public void testNoList() {
doReturn(null).when(mTemplateLayout).findManagedViewById(eq(android.R.id.list));

View file

@ -105,7 +105,7 @@ public class GlifListLayoutTest {
}
@Test
public void testDividerInset() {
public void testDividerInsetLegacy() {
GlifListLayout layout = new GlifListLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
@ -119,6 +119,22 @@ public class GlifListLayoutTest {
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
@Test
public void testDividerInsets() {
GlifListLayout layout = new GlifListLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
assertListTemplateInflated(layout);
layout.setDividerInsets(10, 15);
assertEquals("Divider inset should be 10", 10, layout.getDividerInsetStart());
assertEquals("Divider inset should be 15", 15, layout.getDividerInsetEnd());
final Drawable divider = layout.getDivider();
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
private void assertListTemplateInflated(GlifListLayout layout) {
View title = layout.findViewById(R.id.suw_layout_title);
assertNotNull("@id/suw_layout_title should not be null", title);

View file

@ -16,11 +16,15 @@
package com.android.setupwizardlib.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.os.Build;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
@ -87,6 +91,37 @@ public class SetupWizardListLayoutTest {
progressBar instanceof ProgressBar && progressBar.getVisibility() == View.VISIBLE);
}
@Test
public void testDividerInsetLegacy() {
SetupWizardListLayout layout = new SetupWizardListLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
assertListTemplateInflated(layout);
layout.setDividerInset(10);
assertEquals("Divider inset should be 10", 10, layout.getDividerInset());
final Drawable divider = layout.getDivider();
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
@Test
public void testDividerInsets() {
SetupWizardListLayout layout = new SetupWizardListLayout(mContext);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
layout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
assertListTemplateInflated(layout);
layout.setDividerInsets(10, 15);
assertEquals("Divider inset start should be 10", 10, layout.getDividerInsetStart());
assertEquals("Divider inset end should be 15", 15, layout.getDividerInsetEnd());
final Drawable divider = layout.getDivider();
assertTrue("Divider should be instance of InsetDrawable", divider instanceof InsetDrawable);
}
private void assertListTemplateInflated(SetupWizardLayout layout) {
View decorView = layout.findViewById(R.id.suw_layout_decor);
View navbar = layout.findViewById(R.id.suw_layout_navigation_bar);