From ff85378317b051eb4f9df5474e2c1f0ccd22dd93 Mon Sep 17 00:00:00 2001 From: Hieu Pham Date: Tue, 21 Apr 2015 15:09:48 -0700 Subject: [PATCH] [TIMOB-17621]: Add support for dividerHeight property. --- .../ui/widget/listview/ListViewProxy.java | 3 +- .../ui/widget/listview/TiListView.java | 29 ++++++++++++++++--- .../java/org/appcelerator/titanium/TiC.java | 5 ++++ apidoc/Titanium/UI/ListView.yml | 9 ++++++ 4 files changed, 41 insertions(+), 5 deletions(-) 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 1ac36da4b40..61a35643270 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 @@ -38,7 +38,8 @@ TiC.PROPERTY_SEARCH_VIEW, TiC.PROPERTY_CASE_INSENSITIVE_SEARCH, TiC.PROPERTY_HEADER_DIVIDERS_ENABLED, - TiC.PROPERTY_FOOTER_DIVIDERS_ENABLED + TiC.PROPERTY_FOOTER_DIVIDERS_ENABLED, + TiC.PROPERTY_DIVIDER_HEIGHT }) public class ListViewProxy extends TiViewProxy { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java index dfc358d0766..1b253058b5b 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java @@ -34,7 +34,6 @@ import ti.modules.titanium.ui.widget.searchbar.TiUISearchBar; import ti.modules.titanium.ui.widget.searchbar.TiUISearchBar.OnSearchChangeListener; import ti.modules.titanium.ui.widget.searchview.TiUISearchView; -import ti.modules.titanium.ui.widget.tableview.TiTableView; import android.app.Activity; import android.content.Context; import android.graphics.Color; @@ -47,13 +46,13 @@ import android.view.ViewGroup; import android.view.ViewParent; import android.widget.AbsListView; +import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; -import android.widget.AbsListView.OnScrollListener; public class TiListView extends TiUIView implements OnSearchChangeListener { @@ -73,6 +72,7 @@ public class TiListView extends TiUIView implements OnSearchChangeListener { private int headerFooterId; public static LayoutInflater inflater; private int titleId; + private int dividerHeight; private int[] marker = new int[2]; private View headerView; private View footerView; @@ -447,6 +447,15 @@ public void processProperties(KrollDict d) { this.caseInsensitive = TiConvert.toBoolean(d, TiC.PROPERTY_CASE_INSENSITIVE_SEARCH, true); } + if (d.containsKey(TiC.PROPERTY_DIVIDER_HEIGHT)) { + TiDimension dHeight = TiConvert.toTiDimension(d.get(TiC.PROPERTY_DIVIDER_HEIGHT), -1); + int height = dHeight.getAsPixels(listView); + if (height > 0) { + dividerHeight = height; + listView.setDividerHeight(height); + } + } + if (d.containsKey(TiC.PROPERTY_SEPARATOR_COLOR)) { String color = TiConvert.toString(d, TiC.PROPERTY_SEPARATOR_COLOR); setSeparatorColor(color); @@ -654,6 +663,13 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP } else if (key.equals(TiC.PROPERTY_SEPARATOR_COLOR)) { String color = TiConvert.toString(newValue); setSeparatorColor(color); + } else if (key.equals(TiC.PROPERTY_DIVIDER_HEIGHT)) { + TiDimension dHeight = TiConvert.toTiDimension(newValue, -1); + int height = dHeight.getAsPixels(listView); + if (height > 0) { + dividerHeight = height; + listView.setDividerHeight(height); + } } else { super.propertyChanged(key, oldValue, newValue, proxy); } @@ -670,9 +686,14 @@ private void setSearchListener(TiViewProxy searchView, TiUIView search) private void setSeparatorColor(String color) { int sepColor = TiColorHelper.parseColor(color); - int dividerHeight = listView.getDividerHeight(); + int dHeight = 0; + if (dividerHeight == 0) { + dHeight = listView.getDividerHeight(); + } else { + dHeight = dividerHeight; + } listView.setDivider(new ColorDrawable(sepColor)); - listView.setDividerHeight(dividerHeight); + listView.setDividerHeight(dHeight); } private void refreshItems() { diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index a146a275214..b2d733e158f 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -1127,6 +1127,11 @@ public class TiC */ public static final String PROPERTY_DISPLAY_ADDRESS = "displayAddress"; + /** + * @module.api + */ + public static final String PROPERTY_DIVIDER_HEIGHT = "dividerHeight"; + /** * @module.api */ diff --git a/apidoc/Titanium/UI/ListView.yml b/apidoc/Titanium/UI/ListView.yml index 409e65f7abe..33bd955768d 100644 --- a/apidoc/Titanium/UI/ListView.yml +++ b/apidoc/Titanium/UI/ListView.yml @@ -521,6 +521,15 @@ properties: type: [String, Number] default: Titanium.UI.LIST_ITEM_TEMPLATE_DEFAULT + - name: dividerHeight + summary: height of the ListView divider. + description: | + Height of the ListView divider, in platform-specific units. If undefined, default native height will be used. + Numerical inputs are treated as pixels. For example, 3 and "3px" are equivalent. + type: [String, Number] + since: "4.1.0" + platforms: [android] + - name: footerDividersEnabled summary: When set to false, the ListView will not draw the divider before the footer view. type: Boolean