private void ApplyCustomProperty(IAttributeSet attrs) { Log.Debug(TAG, "Applying custom property"); var a = context.Theme.ObtainStyledAttributes(attrs, Resource.Styleable.CountryCodePicker, 0, 0); try { // set hide nameCode. If someone wants only phone code to avoid name collision for same country phone code. hideNameCode = a.GetBoolean(Resource.Styleable.CountryCodePicker_hideNameCode, false); // set autopop keyboard KeyboardAutoPopOnSearch = (a.GetBoolean(Resource.Styleable.CountryCodePicker_keyboardAutoPopOnSearch, true)); // set custom language is specified, then set it as custom int attrLanguage = LANGUAGE_ENGLISH; if (a.HasValue(Resource.Styleable.CountryCodePicker_ccpLanguage)) { attrLanguage = a.GetInt(Resource.Styleable.CountryCodePicker_ccpLanguage, 1); } CustomLanguage = GetLanguageEnum(attrLanguage); // set custom master list CustomMasterCountries = a.GetString(Resource.Styleable.CountryCodePicker_customMasterCountries); RefreshCustomMasterList(); // set preference countryPreference = a.GetString(Resource.Styleable.CountryCodePicker_countryPreference); RefreshPreferredCountries(); // set default country var lang = Locale.Default.DisplayLanguage; defaultCountryNameCode = a.GetString(Resource.Styleable.CountryCodePicker_defaultNameCode); bool usingNameCode = false; if (defaultCountryNameCode != null && defaultCountryNameCode.Length != 0) { if (Country.GetCountryForNameCodeFromLibraryMasterList(CustomLanguage, defaultCountryNameCode) != null) { usingNameCode = true; DefaultCountry = Country.GetCountryForNameCodeFromLibraryMasterList(CustomLanguage, defaultCountryNameCode); SetSelectedCountry(DefaultCountry); } } // set default country is not set using name code. if (!usingNameCode) { int defaultCountryCode = a.GetInteger(Resource.Styleable.CountryCodePicker_defaultCode, -1); // if invalid country is set using xml, it will be replaced with LIB_DEFAULT_COUNTRY_CODE if (Country.GetCountryForCode(CustomLanguage, PreferredCountries, defaultCountryCode) == null) { defaultCountryCode = LIB_DEFAULT_COUNTRY_CODE; } SetDefaultCountryUsingPhoneCode(defaultCountryCode); SetSelectedCountry(DefaultCountry); } // set color SelectedCountryTextView.SetTextColor(Color.ParseColor("#666666")); ArrowImageView.SetColorFilter(Color.ParseColor("#666666"), PorterDuff.Mode.SrcIn); // set text size SelectedCountryTextView.SetTextSize(ComplexUnitType.Dip, 18); // set arrow arrow size is explicitly defined int arrowSize = a.GetDimensionPixelSize(Resource.Styleable.CountryCodePicker_arrowSize, 0); if (arrowSize > 0) { SetArrowSize(arrowSize); } } catch (Exception e) { SelectedCountryTextView.Text = e.Message; } finally { a.Recycle(); } }