diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIListView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIListView.java index a5af9a599fb..32f3dc48de8 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIListView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIListView.java @@ -25,6 +25,8 @@ import org.appcelerator.titanium.util.TiConvert; import org.appcelerator.titanium.view.TiUIView; +import java.util.HashMap; + import ti.modules.titanium.ui.widget.listview.ListViewProxy; import ti.modules.titanium.ui.RefreshControlProxy; import ti.modules.titanium.ui.SearchBarProxy; @@ -256,6 +258,44 @@ private void processProperty(String name, Object value) || name.equals(TiC.PROPERTY_SEARCH_TEXT)) { this.listView.update(true); } + + if (name.equals(TiC.PROPERTY_CLIP_VIEWS)) { + this.listView.getRecyclerView().setClipToPadding(TiConvert.toBoolean(value, true)); + } + + if (name.equals(TiC.PROPERTY_PADDING)) { + setPadding((HashMap) value); + } + } + + private void setPadding(HashMap d) + { + int paddingLeft = this.listView.getRecyclerView().getPaddingLeft(); + int paddingRight = this.listView.getRecyclerView().getPaddingRight(); + int paddingTop = this.listView.getRecyclerView().getPaddingTop(); + int paddingBottom = this.listView.getRecyclerView().getPaddingBottom(); + + if (d.containsKey(TiC.PROPERTY_LEFT)) { + paddingLeft = TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_LEFT), 0), + TiDimension.TYPE_LEFT).getAsPixels(this.listView); + } + + if (d.containsKey(TiC.PROPERTY_RIGHT)) { + paddingRight = TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_RIGHT), 0), + TiDimension.TYPE_RIGHT).getAsPixels(this.listView); + } + + if (d.containsKey(TiC.PROPERTY_TOP)) { + paddingTop = TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_TOP), 0), + TiDimension.TYPE_TOP).getAsPixels(this.listView); + } + + if (d.containsKey(TiC.PROPERTY_BOTTOM)) { + paddingBottom = TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_BOTTOM), 0), + TiDimension.TYPE_BOTTOM).getAsPixels(this.listView); + } + + this.listView.getRecyclerView().setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); } /** diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java index f3b88eaf0cf..fd2a37c2ec0 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java @@ -60,7 +60,9 @@ TiC.PROPERTY_SHOW_VERTICAL_SCROLL_INDICATOR, TiC.PROPERTY_TEMPLATES, TiC.PROPERTY_TOUCH_FEEDBACK, - TiC.PROPERTY_TOUCH_FEEDBACK_COLOR + TiC.PROPERTY_TOUCH_FEEDBACK_COLOR, + TiC.PROPERTY_CLIP_VIEWS, + TiC.PROPERTY_PADDING } ) public class ListViewProxy extends RecyclerViewProxy diff --git a/apidoc/Titanium/UI/ListView.yml b/apidoc/Titanium/UI/ListView.yml index b2fa371f090..814742528fa 100644 --- a/apidoc/Titanium/UI/ListView.yml +++ b/apidoc/Titanium/UI/ListView.yml @@ -659,7 +659,7 @@ events: summary: | The expected y axis offset when the scrolling action decelerates to a stop. type: Number - + - name: visibleItemCount summary: The number of visible items in the list view when the event fires. type: Number @@ -989,6 +989,23 @@ properties: platforms: [android, iphone, ipad, macos] since: 11.1.0 + - name: clipViews + summary: | + Determines whether the items outside of the padding are clipped. + description: | + You have to set the [padding](Titanium.UI.ListView.padding) property to make use of this property. + type: Boolean + availability: creation + default: true + since: { android: 12.8.0 } + platforms: [android] + + - name: padding + summary: The padding applied to the ListView view. + platforms: [android] + type: Padding + since: "12.8.0" + - name: forceUpdates summary: Optimize the `continuousUpdate` scrolling event. description: |