摘要:使用實現滑動選擇可實現省市聯動最近使用了一個控件該控件可以實現省市區聯動以及其他各種滑動選擇,這里只是簡單的記錄下如何使用。
NumberPicker使用,實現滑動選擇(可實現省市聯動)
最近使用了一個控件NumberPicker,該控件可以實現省市區聯動以及其他各種滑動選擇,這里只是簡單的記錄下如何使用。
效果圖:
先是xml文件:
接下來是Activity的代碼:
public class MainActivity extends AppCompatActivity implements NumberPicker.Formatter{ private NumberPicker mNumberPicker; private String[] mCities = {"北京","上海","廣州","深圳","杭州","青島","西安"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.AppTheme); setContentView(R.layout.activity_main); mNumberPicker = (NumberPicker)findViewById(R.id.number_picker); mNumberPicker.setDisplayedValues(mCities);//設置需要顯示的數組 mNumberPicker.setMinValue(0); mNumberPicker.setMaxValue(mCities.length - 1);//這兩行不能缺少,不然只能顯示第一個,關聯到format方法 setPickerDividerColor(); setNumberPickerTextColor(mNumberPicker,Color.RED); } //這個方法是根據index 格式化先生的文字,需要先 implements NumberPicker.Formatter @Override public String format(int value) { return mCities[value]; } /** * 通過反射改變分割線顏色, */ private void setPickerDividerColor() { Field[] pickerFields = NumberPicker.class.getDeclaredFields(); for (Field pf : pickerFields) { if (pf.getName().equals("mSelectionDivider")) { pf.setAccessible(true); try{ pf.set(mNumberPicker,new ColorDrawable(Color.BLUE)); }catch (IllegalAccessException e) { e.printStackTrace(); }catch (Resources.NotFoundException e) { e.printStackTrace(); }catch (IllegalArgumentException e) { e.printStackTrace(); } } } } /** * 過反射改變文字的顏色 * @param numberPicker * @param color * @return */ public static boolean setNumberPickerTextColor(NumberPicker numberPicker, int color) { final int count = numberPicker.getChildCount(); for(int i = 0; i < count; i++){ View child = numberPicker.getChildAt(i); if(child instanceof EditText){ try{ Field selectorWheelPaintField = numberPicker.getClass() .getDeclaredField("mSelectorWheelPaint"); selectorWheelPaintField.setAccessible(true); ((Paint)selectorWheelPaintField.get(numberPicker)).setColor(color); ((EditText)child).setTextColor(color); numberPicker.invalidate(); return true; } catch(NoSuchFieldException e){ Log.w("setTextColor", e); } catch(IllegalAccessException e){ Log.w("setTextColor", e); } catch(IllegalArgumentException e){ Log.w("setTextColor", e); } } } return false; } }
以上就是NumberPicker的簡單使用了,可以用它實現省市區聯動(3個NumberPicker),也可以實現充值打折金額滑動選擇(比如充100(實付:90))等等.通過反射改變分割線的方法是在stackoverflow上看到的:
改變分割線顏色:http://stackoverflow.com/ques...
改變文字顏色:http://stackoverflow.com/ques...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66668.html
摘要:寫在前面之前寫了一篇為移動端而生的自定義多級聯動選擇器,得到了很多人的關注。預知后話地址為移動端而生的自定義多級聯動選擇器到此,的操作和手勢算法就已經基本掌握了。 寫在前面 之前寫了一篇 MultiPicker -『為移動端而生』的自定義多級聯動選擇器,得到了很多人的關注。鑒于很多人對這種手寫插件的過程很好奇,所以寫了幾篇文章,來說說它的成長史~ 在閱讀本文之前,確保你有稍微看過 Mu...
摘要:寫在前面之前寫了一篇為移動端而生的自定義多級聯動選擇器,得到了很多人的關注。預知后話地址為移動端而生的自定義多級聯動選擇器到此,的操作和手勢算法就已經基本掌握了。 寫在前面 之前寫了一篇 MultiPicker -『為移動端而生』的自定義多級聯動選擇器,得到了很多人的關注。鑒于很多人對這種手寫插件的過程很好奇,所以寫了幾篇文章,來說說它的成長史~ 在閱讀本文之前,確保你有稍微看過 Mu...
摘要:寫在前面之前寫了一篇為移動端而生的自定義多級聯動選擇器,得到了很多人的關注。預知后話地址為移動端而生的自定義多級聯動選擇器到此,的操作和手勢算法就已經基本掌握了。 寫在前面 之前寫了一篇 MultiPicker -『為移動端而生』的自定義多級聯動選擇器,得到了很多人的關注。鑒于很多人對這種手寫插件的過程很好奇,所以寫了幾篇文章,來說說它的成長史~ 在閱讀本文之前,確保你有稍微看過 Mu...
閱讀 2280·2019-08-30 15:56
閱讀 3115·2019-08-30 13:48
閱讀 1128·2019-08-30 10:52
閱讀 1497·2019-08-29 17:30
閱讀 426·2019-08-29 13:44
閱讀 3547·2019-08-29 12:53
閱讀 1117·2019-08-29 11:05
閱讀 2671·2019-08-26 13:24