Skip to content

Commit e1560ee

Browse files
committed
[#9] Added new attr and method to enable dismiss button, dismiss button text and dismiss button color for search dialog.
1 parent e8e1fb6 commit e1560ee

File tree

8 files changed

+137
-1
lines changed

8 files changed

+137
-1
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ The best Android spinner library for your android application with more customiz
2727
* `smsp_searchTextColor`: To set color to query search text
2828
* `smsp_searchBackgroundColor`: To set background color to searchview
2929
* `smsp_itemListBackgroundColor`: To set background color to search item list
30+
* `smsp_enableDismissSearch`: To enable/disable dismiss button on search dialog
31+
* `smsp_dismissSearchText`: To set dismiss button text for search dialog
32+
* `smsp_dismissSearchColor`: To set dismiss button text color for search dialog
3033

3134
### Spinner item
3235
* `smsp_itemSize`: To set spinner item size
@@ -63,6 +66,8 @@ The best Android spinner library for your android application with more customiz
6366
* Selected item color (`smsp_selectedItemListColor`)
6467
* Arrow or selector color (`smsp_arrowColor`)
6568
* Underline color (`smsp_underlineColor`)
69+
* Dropdown list/Search ListView background (`smsp_itemListBackgroundColor`)
70+
* Search dialog dismiss button color (`smsp_dismissSearchColor`)
6671
### Empty dropdown clickable
6772
* In case if you want to design view with empty spinner and apply click event and here it is.
6873
### Underline

demojava/src/main/java/com/chivorn/demojava/MainActivity.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ private void initSpinnerInJava() {
5757
spSearchable.setTypeface(celloSanLFont);
5858
spProvince.setTypeface(celloSanLIFont);
5959
spReSelectable.setTypeface(celloSanMIFont);
60+
61+
// To custom dismiss button on search dialog
62+
/* spSearchable.setEnableDismissSearch(true);
63+
spSearchable.setDismissSearchText("Hello");
64+
spSearchable.setDismissSearchColor(Color.parseColor("#4E61CC"));*/
6065
}
6166

6267
private void setOnItemSelectedListener(SmartMaterialSpinner... spinners) {

smartmaterialspinner/src/main/java/com/chivorn/smartmaterialspinner/SearchableSpinnerDialog.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import android.view.WindowManager;
2424
import android.widget.AdapterView;
2525
import android.widget.ArrayAdapter;
26+
import android.widget.Button;
2627
import android.widget.LinearLayout;
2728
import android.widget.ListView;
2829
import android.widget.TextView;
@@ -43,6 +44,7 @@ public class SearchableSpinnerDialog extends DialogFragment implements SearchVie
4344
private ListView searchListView;
4445
private TextView tvListItem;
4546
private LinearLayout itemListContainer;
47+
public Button btnDismiss;
4648

4749
private boolean isEnableSearchHeader = true;
4850
private int headerBackgroundColor;
@@ -66,6 +68,10 @@ public class SearchableSpinnerDialog extends DialogFragment implements SearchVie
6668

6769
private Typeface typeface;
6870

71+
private boolean enableDismissSearch = false;
72+
private String dismissSearchText;
73+
private int dismissSearchColor;
74+
6975
private OnSearchDialogEventListener onSearchDialogEventListener;
7076
private OnSearchTextChanged onSearchTextChanged;
7177
private DialogInterface.OnClickListener dialogListener;
@@ -146,6 +152,7 @@ private void initSearchDialog(View rootView, Bundle savedInstanceState) {
146152
tvSearch = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
147153
searchListView = rootView.findViewById(R.id.search_list_item);
148154
itemListContainer = rootView.findViewById(R.id.item_search_list_container);
155+
btnDismiss = rootView.findViewById(R.id.btn_dismiss);
149156

150157
if (getActivity() != null) {
151158
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
@@ -209,8 +216,16 @@ public void onLayoutChange(View v, int left, int top, int right, int bottom, int
209216
}
210217
});
211218

219+
btnDismiss.setOnClickListener(new View.OnClickListener() {
220+
@Override
221+
public void onClick(View v) {
222+
dismiss();
223+
}
224+
});
225+
212226
initSearchHeader();
213227
initSearchBody();
228+
initSearchFooter();
214229
}
215230

216231
private void initSearchHeader() {
@@ -260,6 +275,15 @@ private void initSearchBody() {
260275
}
261276
}
262277

278+
private void initSearchFooter() {
279+
if (enableDismissSearch)
280+
btnDismiss.setVisibility(View.VISIBLE);
281+
if (dismissSearchText != null)
282+
btnDismiss.setText(dismissSearchText);
283+
if (dismissSearchColor != 0)
284+
btnDismiss.setTextColor(dismissSearchColor);
285+
}
286+
263287
@Override
264288
public void onPause() {
265289
super.onPause();
@@ -410,4 +434,28 @@ public Typeface getTypeface() {
410434
public void setTypeface(Typeface typeface) {
411435
this.typeface = typeface;
412436
}
437+
438+
public boolean isEnableDismissSearch() {
439+
return enableDismissSearch;
440+
}
441+
442+
public void setEnableDismissSearch(boolean enableDismissSearch) {
443+
this.enableDismissSearch = enableDismissSearch;
444+
}
445+
446+
public String getDismissSearchText() {
447+
return dismissSearchText;
448+
}
449+
450+
public void setDismissSearchText(String dismissSearchText) {
451+
this.dismissSearchText = dismissSearchText;
452+
}
453+
454+
public int getDismissSearchColor() {
455+
return dismissSearchColor;
456+
}
457+
458+
public void setDismissSearchColor(int dismissSearchColor) {
459+
this.dismissSearchColor = dismissSearchColor;
460+
}
413461
}

smartmaterialspinner/src/main/java/com/chivorn/smartmaterialspinner/SmartMaterialSpinner.java

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ public class SmartMaterialSpinner<T> extends AppCompatSpinner implements Adapter
7676
private int searchHeaderTextColor;
7777
private String searchHint;
7878

79+
private boolean enableDismissSearch = false;
80+
private String dismissSearchText;
81+
private int dismissSearchColor;
82+
7983
private Path selectorPath;
8084
private Point[] selectorPoints;
8185

@@ -300,6 +304,10 @@ private void initAttributes(Context context, AttributeSet attrs) {
300304
//isEnableDefaultSelect = typedArray.getBoolean(R.styleable.SmartMaterialSpinner_smsp_enableDefaultSelect, true);
301305
isReSelectable = typedArray.getBoolean(R.styleable.SmartMaterialSpinner_smsp_isReSelectable, false);
302306

307+
enableDismissSearch = typedArray.getBoolean(R.styleable.SmartMaterialSpinner_smsp_enableDismissSearch, false);
308+
dismissSearchText = typedArray.getString(R.styleable.SmartMaterialSpinner_smsp_dismissSearchText);
309+
dismissSearchColor = typedArray.getColor(R.styleable.SmartMaterialSpinner_smsp_dismissSearchColor, ContextCompat.getColor(context, R.color.smsp_dismiss_color));
310+
303311
typedArray.recycle();
304312
lastPosition = -1;
305313
}
@@ -327,6 +335,9 @@ private void configSearchableDialog() {
327335
else if (searchBackgroundDrawable != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
328336
setSearchBackgroundColor(searchBackgroundDrawable);
329337
}
338+
enableDismissSearch(enableDismissSearch);
339+
configDismissSearchText(dismissSearchText);
340+
configDismissSearchColor(dismissSearchColor);
330341
}
331342

332343
private void removeDefaultSelector(Drawable drawable) {
@@ -1494,7 +1505,52 @@ public void setSearchTypeFace(Typeface typeFace) {
14941505
invalidate();
14951506
}
14961507

1497-
/* public boolean isEnableDefaultSelect() {
1508+
public boolean isEnableDismissSearch() {
1509+
return enableDismissSearch;
1510+
}
1511+
1512+
public void setEnableDismissSearch(boolean enableDismissSearch) {
1513+
this.enableDismissSearch = enableDismissSearch;
1514+
enableDismissSearch(enableDismissSearch);
1515+
invalidate();
1516+
}
1517+
1518+
private void enableDismissSearch(boolean enableDismissSearch) {
1519+
if (searchableSpinnerDialog != null)
1520+
searchableSpinnerDialog.setEnableDismissSearch(enableDismissSearch);
1521+
}
1522+
1523+
public String getDismissSearchText() {
1524+
return dismissSearchText;
1525+
}
1526+
1527+
public void setDismissSearchText(String dismissSearchText) {
1528+
this.dismissSearchText = dismissSearchText;
1529+
configDismissSearchText(dismissSearchText);
1530+
invalidate();
1531+
}
1532+
1533+
private void configDismissSearchText(String dismissSearchText) {
1534+
if (searchableSpinnerDialog != null)
1535+
searchableSpinnerDialog.setDismissSearchText(dismissSearchText);
1536+
}
1537+
1538+
public int getDismissSearchColor() {
1539+
return dismissSearchColor;
1540+
}
1541+
1542+
public void setDismissSearchColor(int dismissSearchColor) {
1543+
this.dismissSearchColor = dismissSearchColor;
1544+
configDismissSearchColor(dismissSearchColor);
1545+
invalidate();
1546+
}
1547+
1548+
private void configDismissSearchColor(int dismissSearchColor) {
1549+
if (searchableSpinnerDialog != null)
1550+
searchableSpinnerDialog.setDismissSearchColor(dismissSearchColor);
1551+
}
1552+
1553+
/* public boolean isEnableDefaultSelect() {
14981554
return isEnableDefaultSelect;
14991555
}
15001556

smartmaterialspinner/src/main/res/layout/smart_material_spinner_searchable_dialog_layout.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<LinearLayout
2828
android:layout_width="match_parent"
2929
android:layout_height="wrap_content"
30+
android:layout_weight="90"
3031
android:orientation="vertical">
3132

3233
<android.support.v7.widget.SearchView
@@ -52,4 +53,21 @@
5253
android:paddingBottom="5dp" />
5354
</LinearLayout>
5455
</LinearLayout>
56+
57+
<LinearLayout
58+
android:layout_width="match_parent"
59+
android:layout_height="wrap_content"
60+
android:layout_weight="1"
61+
android:orientation="vertical">
62+
63+
<Button
64+
android:id="@+id/btn_dismiss"
65+
android:layout_width="wrap_content"
66+
android:layout_height="wrap_content"
67+
android:layout_gravity="end"
68+
android:background="@color/smsp_transparent_color"
69+
android:text="Done"
70+
android:textColor="@color/smsp_dismiss_color"
71+
android:visibility="gone" />
72+
</LinearLayout>
5573
</LinearLayout>

smartmaterialspinner/src/main/res/values/attrs.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
<attr name="smsp_searchHintColor" format="color" />
1919
<attr name="smsp_searchTextColor" format="color" />
2020
<attr name="smsp_searchBackgroundColor" format="color|reference" />
21+
<attr name="smsp_enableDismissSearch" format="boolean" />
22+
<attr name="smsp_dismissSearchText" format="string" />
23+
<attr name="smsp_dismissSearchColor" format="color" />
2124

2225
<attr name="smsp_itemSize" format="dimension" />
2326
<attr name="smsp_itemColor" format="color|reference" />

smartmaterialspinner/src/main/res/values/colors.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
<color name="smsp_item_list_hint_background">#808080</color>
1818
<color name="smsp_item_list_background">#FFFFFF</color>
1919
<color name="smsp_selected_color">#E66363</color>
20+
<color name="smsp_dismiss_color">#E14040</color>
2021
</resources>

0 commit comments

Comments
 (0)