Android,如何在编辑文本中为 phone 号码验证创建国家代码?
Android, How do i create country code in edit text for phone number validation?
我想为我的应用程序创建一个 OTP 代码,那么如何为 phone 号码验证创建一个国家代码。
如果你解决了这样的问题,请分享给我。
谢谢
使用 TelephonyManager 创建国家代码。
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String countryCodeValue = tm.getNetworkCountryIso();
创建一个名为 country_codes.xml
的 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="country_code">
<item>+93,</item>
<item>+355,</item>
<item>+213,</item>
<item>+684,</item>
<item>+376,</item>
<item>+244,</item>
<item>+1–264,</item>
<item>+672,</item>
<item>+1–268,</item>
<item>+54,</item>
<item>+374,</item>
<item>+297,</item>
<item>+61,</item>
<item>+43,</item>
<item>+994,</item>
<item>+1–242,</item>
<item>+973,</item>
<item>+ 880,</item>
<item>+1–246,</item>
<item>+375,</item>
<item>+32,</item>
<item>+501,</item>
<item>+229,</item>
<item>+1–441,</item>
<item>+975,</item>
<item>+591,</item>
<item>+387,</item>
<item>+267,</item>
<item>+55,</item>
<item>+673,</item>
<item>+359,</item>
<item>+226,</item>
<item>+257,</item>
<item>+855,</item>
<item>+237,</item>
<item>+1,</item>
<item>+238,</item>
<item>+1–345,</item>
<item>+236,</item>
<item>+235,</item>
<item>+56,</item>
<item>+86,</item>
<item>+61,</item>
<item>+61,</item>
<item>+57,</item>
<item>+269,</item>
<item>+242,</item>
<item>+243,</item>
<item>+682,</item>
<item>+506,</item>
<item>+385,</item>
<item>+53,</item>
<item>+357,</item>
<item>+420,</item>
<item>+45,</item>
<item>+253,</item>
<item>+1–767,</item>
<item>+809,</item>
<item>+593,</item>
<item>+20,</item>
<item>+503,</item>
<item>+240,</item>
<item>+291,</item>
<item>+372,</item>
<item>+251,</item>
<item>+500,</item>
<item>+298,</item>
<item>+679,</item>
<item>+358,</item>
<item>+33,</item>
<item>+594,</item>
<item>+241,</item>
<item>+220,</item>
<item>+995,</item>
<item>+49,</item>
<item>+233,</item>
<item>+350,</item>
<item>+44,</item>
<item>+30,</item>
<item>+299,</item>
<item>+1–473,</item>
<item>+590,</item>
<item>+1–671,</item>
<item>+502,</item>
<item>+224,</item>
<item>+245,</item>
<item>+592,</item>
<item>+509,</item>
<item>+504,</item>
<item>+852,</item>
<item>+36,</item>
<item>+354,</item>
<item>+91,</item>
<item>+62,</item>
<item>+98,</item>
<item>+964,</item>
<item>+353,</item>
<item>+972,</item>
<item>+39,</item>
<item>+225,</item>
<item>+1–876,</item>
<item>+81,</item>
<item>+962,</item>
<item>+7,</item>
<item>+254,</item>
<item>+686,</item>
<item>+850,</item>
<item>+82,</item>
<item>+965,</item>
<item>+996,</item>
<item>+856,</item>
<item>+371,</item>
<item>+961,</item>
<item>+266,</item>
<item>+231,</item>
<item>+218,</item>
<item>+423,</item>
<item>+370,</item>
<item>+352,</item>
>
<item>+853,</item>
<item>+389,</item>
<item>+261,</item>
<item>+265,</item>
<item>+60,</item>
<item>+960,</item>
<item>+223,</item>
<item>+356,</item>
<item>+692,</item>
<item>+596,</item>
<item>+222,</item>
<item>+230,</item>
<item>+269,</item>
<item>+52,</item>
<item>+691,</item>
<item>+373,</item>
<item>+377,</item>
<item>+976,</item>
<item>+382,</item>
<item>+1–664,</item>
<item>+212,</item>
<item>+258,</item>
<item>+95,</item>
<item>+264,</item>
<item>+674,</item>
<item>+977,</item>
<item>+31,</item>
<item>+599,</item>
<item>+687,</item>
<item>+64,</item>
<item>+505,</item>
<item>+227,</item>
<item>+234,</item>
<item>+683,</item>
<item>+672,</item>
<item>+670,</item>
<item>+47,</item>
<item>+968,</item>
<item>+92,</item>
<item>+680,</item>
<item>+507,</item>
<item>+675,</item>
<item>+595,</item>
<item>+51,</item>
<item>+63,</item>
<item>+48,</item>
<item>+689,</item>
<item>+351,</item>
<item>+1–787,</item>
<item>+974,</item>
<item>+262,</item>
<item>+40,</item>
<item>+7,</item>
<item>+250,</item>
<item>+290,</item>
<item>+1–869,</item>
<item>+1–758,</item>
<item>+508,</item>
<item>+1–784,</item>
<item>+684,</item>
<item>+378,</item>
<item>+239,</item>
<item>+966,</item>
<item>+221,</item>
<item>+381,</item>
<item>+248,</item>
<item>+232,</item>
<item>+65,</item>
<item>+421,</item>
<item>+386,</item>
<item>+677,</item>
<item>+252,</item>
<item>+27,</item>
<item>+34,</item>
<item>+94,</item>
<item>+249,</item>
<item>+597,</item>
<item>+268,</item>
<item>+46,</item>
<item>+41,</item>
<item>+963,</item>
<item>+886,</item>
<item>+992,</item>
<item>+255,</item>
<item>+66,</item>
<item>+228,</item>
<item>+690,</item>
<item>+676,</item>
<item>+1–868,</item>
<item>+216,</item>
<item>+90,</item>
<item>+993,</item>
<item>+1–649,</item>
<item>+688,</item>
<item>+44,</item>
<item>+1,</item>
<item>+256,</item>
<item>+380,</item>
<item>+971,</item>
<item>+598,</item>
<item>+998,</item>
<item>+678,</item>
<item>+39,</item>
<item>+58,</item>
<item>+84,</item>
<item>+1–284,</item>
<item>+1–340,</item>
<item>+681,</item>
<item>+967,</item>
<item>+260,</item>
<item>+263,</item>
</string-array>
<string-array name="country_name">
<item>Afghanistan</item>
<item>Albania</item>
<item>Algeria</item>
<item>American Samoa</item>
<item>Andorra</item>
<item>Angola</item>
<item>Anguilla</item>
<item>Antarctica</item>
<item> Antigua and Barbuda</item>
<item>Argentina</item>
<item>Armenia</item>
<item>Aruba</item>
<item>Australia</item>
<item>Austria</item>
<item>Azerbaijan</item>
<item>Bahamas</item>
<item>Bahrain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
<item>Bermuda</item>
<item>Bhutan</item>
<item>Bolivia</item>
<item>Bosnia-Herzegovina</item>
<item>Botswana</item>
<item>Brazil</item>
<item>Brunei Darussalam</item>
<item>Bulgaria</item>
<item>Burkina Faso</item>
<item>Burundi</item>
<item>Cambodia</item>
<item>Cameroon</item>
<item>Canada</item>
<item>Cape Verde </item>
<item>Cayman Islands</item>
<item>Central African Republic</item>
<item>Chad </item>
<item>Chile </item>
<item>China </item>
<item>Christmas Island</item>
<item>Cocos (Keeling) Islands</item>
<item>Colombia </item>
<item>Comoros </item>
<item>Congo </item>
<item>Congo, Dem. Republic </item>
<item>Cook Islands</item>
<item>Costa Rica </item>
<item>Croatia</item>
<item>Cuba </item>
<item>Cyprus</item>
<item>Czech </item>
<item>Denmark </item>
<item>Djibouti</item>
<item>Dominica </item>
<item>Dominican</item>
<item>Ecuador </item>
<item>Egypt </item>
<item>El Salvador</item>
<item>Equatorial</item>
<item>Eritrea </item>
<item>Estonia </item>
<item>Ethiopia </item>
<item>Falkland Islands (Malvinas)</item>
<item>Faroe Islands</item>
<item>Fiji</item>
<item>Finland </item>
<item>France </item>
<item>French Guiana</item>
<item>Gabon</item>
<item>Gambia </item>
<item>Georgia </item>
<item>Germany </item>
<item>Ghana </item>
<item>Gibraltar </item>
<item>Great Britain </item>
<item>Greece </item>
<item>Greenland</item>
<item>Grenada </item>
<item>Guadeloupe (French) </item>
<item>Guam (USA)</item>
<item>Guatemala </item>
<item>Guinea </item>
<item>Guinea Bissau </item>
<item>Guyana </item>
<item>Haiti </item>
<item>Honduras </item>
<item>Hong Kong </item>
<item>Hungary </item>
<item>Iceland </item>
<item>India </item>
<item>Indonesia </item>
<item>Iran </item>
<item>Iraq </item>
<item>Ireland </item>
<item>Israel </item>
<item>Italy</item>
<item>Ivory </item>
<item>Jamaica </item>
<item>Japan </item>
<item>Jordan </item>
<item>Kazakhstan </item>
<item>Kenya </item>
<item>Kiribati </item>
<item>Korea-North</item>
<item>Korea-South </item>
<item>Kuwait </item>
<item>Kyrgyzstan </item>
<item>Laos </item>
<item>Latvia </item>
<item>Lebanon </item>
<item>Lesotho </item>
<item>Liberia </item>
<item>Libya </item>
<item>Liechtenstein </item>
<item>Lithuania</item>
<item>Luxembourg </item>
<item>Macau</item>
<item>Macedonia </item>
<item>Madagascar </item>
<item>Malawi </item>
<item>Malaysia </item>
<item>Maldives </item>
<item>Mali </item>
<item>Malta </item>
<item>Marshall Islands </item>
<item>Martinique (French) </item>
<item>Mauritania </item>
<item>Mauritius Port</item>
<item>Mayotte </item>
<item>Mexico </item>
<item>Micronesia </item>
<item>Moldova </item>
<item>Monaco</item>
<item>Mongolia</item>
<item>Montenegro </item>
<item>Montserrat </item>
<item>Morocco</item>
<item>Mozambique </item>
<item>Myanmar</item>
<item>Namibia </item>
<item>Nauru </item>
<item>Nepal </item>
<item>Netherlands</item>
<item>Netherlands Antilles</item>
<item>New Caledonia (French)</item>
<item>New Zealand </item>
<item>Nicaragua </item>
<item>Niger </item>
<item>Nigeria </item>
<item>Niue </item>
<item>Norfolk Island </item>
<item>Northern Mariana Islands </item>
<item>Norway</item>
<item>Oman </item>
<item>Pakistan </item>
<item>Palau </item>
<item>Panama </item>
<item>Papua New Guinea Port</item>
<item>Paraguay </item>
<item>Peru </item>
<item>Philippines </item>
<item>Poland</item>
<item>Polynesia (French) </item>
<item>Portugal </item>
<item>Puerto Rico </item>
<item>Qatar </item>
<item>Reunion (French) </item>
<item>Romania </item>
<item>Russia </item>
<item>Rwanda </item>
<item>Saint Helena </item>
<item>Saint Kitts & Nevis Anguilla</item>
<item>Saint Lucia </item>
<item>Saint Pierre and Miquelon</item>
<item>Saint Vincent & Grenadines </item>
<item>Samoa </item>
<item>San Marino </item>
<item>Sao Tome and Principe</item>
<item>Saudi Arabia</item>
<item>Senegal </item>
<item>Serbia </item>
<item>Seychelles </item>
<item>Sierra Leone</item>
<item>Singapore </item>
<item>Slovakia </item>
<item>Slovenia </item>
<item>Solomon Islands</item>
<item>Somalia</item>
<item>South Africa </item>
<item>Spain </item>
<item>Sri Lanka </item>
<item>Sudan</item>
<item>Suriname</item>
<item>Swaziland </item>
<item>Sweden </item>
<item>Switzerland</item>
<item>Syria </item>
<item>Taiwan </item>
<item>Tajikistan</item>
<item>Tanzania </item>
<item>Thailand </item>
<item>Togo </item>
<item>Tokelau </item>
<item>Tonga </item>
<item>Trinidad and Tobago </item>
<item>Tunisia </item>
<item>Turkey </item>
<item>Turkmenistan </item>
<item>Turks and Caicos Islands</item>
<item>Tuvalu </item>
<item>U.K. </item>
<item>USA </item>
<item>Uganda </item>
<item>Ukraine </item>
<item>United Arab Emirates</item>
<item>Uruguay </item>
<item>Uzbekistan </item>
<item>Vanuatu</item>
<item>Vatican </item>
<item>Venezuela</item>
<item>Vietnam </item>
<item>Virgin Islands (British) </item>
<item>Virgin Islands (USA)</item>
<item>Wallis and Futuna Islands</item>
<item>Yemen</item>
<item>Zambia </item>
<item>Zimbabwe </item>
</string-array>
</resources>
在 activity 的布局中,在编辑文本前添加微调器
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="@dimen/inner_img_xxxl"
android:dropDownWidth="220dp" />
在 activity 中设置适配器以显示所有国家代码和国家名称。
private void setDataToSpinner() {
final ArrayList<String> countryCodeList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.country_code)));
final ArrayList<String> countryNameList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.country_name)));
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countryCodeList) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View row = View.inflate(LoginActivity.this, R.layout.spinner_dropdown_view, null);
TextView countrycodeTV = row.findViewById(R.id.countrycodeTV);
TextView countrynameTV = row.findViewById(R.id.countrynameTV);
countrycodeTV.setText(countryCodeList.get(position));
countrynameTV.setText(countryNameList.get(position));
AppController.getInstance().setTypefaceNeon(countrycodeTV);
AppController.getInstance().setTypefaceNeon(countrynameTV);
return row;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = View.inflate(LoginActivity.this, R.layout.spinner_get_view, null);
TextView countrycodeTV = row.findViewById(R.id.countrycodeTV);
TextView countrynameTV = row.findViewById(R.id.countrynameTV);
AppController.getInstance().setTypefaceNeon(countrycodeTV);
AppController.getInstance().setTypefaceNeon(countrynameTV);
countrycodeTV.setText(countryCodeList.get(position));
countrynameTV.setText(countryNameList.get(position));
return row;
}
};
adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
binding.spinner.setAdapter(adp);}
创建布局simple_spinner_item
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"/>
创建布局spinner_get_view
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/countrycodeTV"
style="?android:attr/spinnerItemStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:maxLines="1"
android:textAlignment="inherit"
android:textSize="@dimen/text_size_button_xs" />
<TextView
android:id="@+id/countrynameTV"
style="?android:attr/spinnerItemStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_toEndOf="@+id/countrycodeTV"
android:ellipsize="marquee"
android:maxLines="1"
android:textAlignment="inherit"
android:textSize="@dimen/text_size_button_xs" />
</RelativeLayout>
谢谢大家的回答,
我找到了解决问题的方法,使用库 'com.hbb20:ccp:1.7.2'.
库是“hbb20 国家代码选择器”。你可以在这里找到它
Github link: https://github.com/hbb20/CountryCodePickerProject
我想为我的应用程序创建一个 OTP 代码,那么如何为 phone 号码验证创建一个国家代码。 如果你解决了这样的问题,请分享给我。 谢谢
使用 TelephonyManager 创建国家代码。
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String countryCodeValue = tm.getNetworkCountryIso();
创建一个名为 country_codes.xml
的 xml 文件<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="country_code">
<item>+93,</item>
<item>+355,</item>
<item>+213,</item>
<item>+684,</item>
<item>+376,</item>
<item>+244,</item>
<item>+1–264,</item>
<item>+672,</item>
<item>+1–268,</item>
<item>+54,</item>
<item>+374,</item>
<item>+297,</item>
<item>+61,</item>
<item>+43,</item>
<item>+994,</item>
<item>+1–242,</item>
<item>+973,</item>
<item>+ 880,</item>
<item>+1–246,</item>
<item>+375,</item>
<item>+32,</item>
<item>+501,</item>
<item>+229,</item>
<item>+1–441,</item>
<item>+975,</item>
<item>+591,</item>
<item>+387,</item>
<item>+267,</item>
<item>+55,</item>
<item>+673,</item>
<item>+359,</item>
<item>+226,</item>
<item>+257,</item>
<item>+855,</item>
<item>+237,</item>
<item>+1,</item>
<item>+238,</item>
<item>+1–345,</item>
<item>+236,</item>
<item>+235,</item>
<item>+56,</item>
<item>+86,</item>
<item>+61,</item>
<item>+61,</item>
<item>+57,</item>
<item>+269,</item>
<item>+242,</item>
<item>+243,</item>
<item>+682,</item>
<item>+506,</item>
<item>+385,</item>
<item>+53,</item>
<item>+357,</item>
<item>+420,</item>
<item>+45,</item>
<item>+253,</item>
<item>+1–767,</item>
<item>+809,</item>
<item>+593,</item>
<item>+20,</item>
<item>+503,</item>
<item>+240,</item>
<item>+291,</item>
<item>+372,</item>
<item>+251,</item>
<item>+500,</item>
<item>+298,</item>
<item>+679,</item>
<item>+358,</item>
<item>+33,</item>
<item>+594,</item>
<item>+241,</item>
<item>+220,</item>
<item>+995,</item>
<item>+49,</item>
<item>+233,</item>
<item>+350,</item>
<item>+44,</item>
<item>+30,</item>
<item>+299,</item>
<item>+1–473,</item>
<item>+590,</item>
<item>+1–671,</item>
<item>+502,</item>
<item>+224,</item>
<item>+245,</item>
<item>+592,</item>
<item>+509,</item>
<item>+504,</item>
<item>+852,</item>
<item>+36,</item>
<item>+354,</item>
<item>+91,</item>
<item>+62,</item>
<item>+98,</item>
<item>+964,</item>
<item>+353,</item>
<item>+972,</item>
<item>+39,</item>
<item>+225,</item>
<item>+1–876,</item>
<item>+81,</item>
<item>+962,</item>
<item>+7,</item>
<item>+254,</item>
<item>+686,</item>
<item>+850,</item>
<item>+82,</item>
<item>+965,</item>
<item>+996,</item>
<item>+856,</item>
<item>+371,</item>
<item>+961,</item>
<item>+266,</item>
<item>+231,</item>
<item>+218,</item>
<item>+423,</item>
<item>+370,</item>
<item>+352,</item>
>
<item>+853,</item>
<item>+389,</item>
<item>+261,</item>
<item>+265,</item>
<item>+60,</item>
<item>+960,</item>
<item>+223,</item>
<item>+356,</item>
<item>+692,</item>
<item>+596,</item>
<item>+222,</item>
<item>+230,</item>
<item>+269,</item>
<item>+52,</item>
<item>+691,</item>
<item>+373,</item>
<item>+377,</item>
<item>+976,</item>
<item>+382,</item>
<item>+1–664,</item>
<item>+212,</item>
<item>+258,</item>
<item>+95,</item>
<item>+264,</item>
<item>+674,</item>
<item>+977,</item>
<item>+31,</item>
<item>+599,</item>
<item>+687,</item>
<item>+64,</item>
<item>+505,</item>
<item>+227,</item>
<item>+234,</item>
<item>+683,</item>
<item>+672,</item>
<item>+670,</item>
<item>+47,</item>
<item>+968,</item>
<item>+92,</item>
<item>+680,</item>
<item>+507,</item>
<item>+675,</item>
<item>+595,</item>
<item>+51,</item>
<item>+63,</item>
<item>+48,</item>
<item>+689,</item>
<item>+351,</item>
<item>+1–787,</item>
<item>+974,</item>
<item>+262,</item>
<item>+40,</item>
<item>+7,</item>
<item>+250,</item>
<item>+290,</item>
<item>+1–869,</item>
<item>+1–758,</item>
<item>+508,</item>
<item>+1–784,</item>
<item>+684,</item>
<item>+378,</item>
<item>+239,</item>
<item>+966,</item>
<item>+221,</item>
<item>+381,</item>
<item>+248,</item>
<item>+232,</item>
<item>+65,</item>
<item>+421,</item>
<item>+386,</item>
<item>+677,</item>
<item>+252,</item>
<item>+27,</item>
<item>+34,</item>
<item>+94,</item>
<item>+249,</item>
<item>+597,</item>
<item>+268,</item>
<item>+46,</item>
<item>+41,</item>
<item>+963,</item>
<item>+886,</item>
<item>+992,</item>
<item>+255,</item>
<item>+66,</item>
<item>+228,</item>
<item>+690,</item>
<item>+676,</item>
<item>+1–868,</item>
<item>+216,</item>
<item>+90,</item>
<item>+993,</item>
<item>+1–649,</item>
<item>+688,</item>
<item>+44,</item>
<item>+1,</item>
<item>+256,</item>
<item>+380,</item>
<item>+971,</item>
<item>+598,</item>
<item>+998,</item>
<item>+678,</item>
<item>+39,</item>
<item>+58,</item>
<item>+84,</item>
<item>+1–284,</item>
<item>+1–340,</item>
<item>+681,</item>
<item>+967,</item>
<item>+260,</item>
<item>+263,</item>
</string-array>
<string-array name="country_name">
<item>Afghanistan</item>
<item>Albania</item>
<item>Algeria</item>
<item>American Samoa</item>
<item>Andorra</item>
<item>Angola</item>
<item>Anguilla</item>
<item>Antarctica</item>
<item> Antigua and Barbuda</item>
<item>Argentina</item>
<item>Armenia</item>
<item>Aruba</item>
<item>Australia</item>
<item>Austria</item>
<item>Azerbaijan</item>
<item>Bahamas</item>
<item>Bahrain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
<item>Bermuda</item>
<item>Bhutan</item>
<item>Bolivia</item>
<item>Bosnia-Herzegovina</item>
<item>Botswana</item>
<item>Brazil</item>
<item>Brunei Darussalam</item>
<item>Bulgaria</item>
<item>Burkina Faso</item>
<item>Burundi</item>
<item>Cambodia</item>
<item>Cameroon</item>
<item>Canada</item>
<item>Cape Verde </item>
<item>Cayman Islands</item>
<item>Central African Republic</item>
<item>Chad </item>
<item>Chile </item>
<item>China </item>
<item>Christmas Island</item>
<item>Cocos (Keeling) Islands</item>
<item>Colombia </item>
<item>Comoros </item>
<item>Congo </item>
<item>Congo, Dem. Republic </item>
<item>Cook Islands</item>
<item>Costa Rica </item>
<item>Croatia</item>
<item>Cuba </item>
<item>Cyprus</item>
<item>Czech </item>
<item>Denmark </item>
<item>Djibouti</item>
<item>Dominica </item>
<item>Dominican</item>
<item>Ecuador </item>
<item>Egypt </item>
<item>El Salvador</item>
<item>Equatorial</item>
<item>Eritrea </item>
<item>Estonia </item>
<item>Ethiopia </item>
<item>Falkland Islands (Malvinas)</item>
<item>Faroe Islands</item>
<item>Fiji</item>
<item>Finland </item>
<item>France </item>
<item>French Guiana</item>
<item>Gabon</item>
<item>Gambia </item>
<item>Georgia </item>
<item>Germany </item>
<item>Ghana </item>
<item>Gibraltar </item>
<item>Great Britain </item>
<item>Greece </item>
<item>Greenland</item>
<item>Grenada </item>
<item>Guadeloupe (French) </item>
<item>Guam (USA)</item>
<item>Guatemala </item>
<item>Guinea </item>
<item>Guinea Bissau </item>
<item>Guyana </item>
<item>Haiti </item>
<item>Honduras </item>
<item>Hong Kong </item>
<item>Hungary </item>
<item>Iceland </item>
<item>India </item>
<item>Indonesia </item>
<item>Iran </item>
<item>Iraq </item>
<item>Ireland </item>
<item>Israel </item>
<item>Italy</item>
<item>Ivory </item>
<item>Jamaica </item>
<item>Japan </item>
<item>Jordan </item>
<item>Kazakhstan </item>
<item>Kenya </item>
<item>Kiribati </item>
<item>Korea-North</item>
<item>Korea-South </item>
<item>Kuwait </item>
<item>Kyrgyzstan </item>
<item>Laos </item>
<item>Latvia </item>
<item>Lebanon </item>
<item>Lesotho </item>
<item>Liberia </item>
<item>Libya </item>
<item>Liechtenstein </item>
<item>Lithuania</item>
<item>Luxembourg </item>
<item>Macau</item>
<item>Macedonia </item>
<item>Madagascar </item>
<item>Malawi </item>
<item>Malaysia </item>
<item>Maldives </item>
<item>Mali </item>
<item>Malta </item>
<item>Marshall Islands </item>
<item>Martinique (French) </item>
<item>Mauritania </item>
<item>Mauritius Port</item>
<item>Mayotte </item>
<item>Mexico </item>
<item>Micronesia </item>
<item>Moldova </item>
<item>Monaco</item>
<item>Mongolia</item>
<item>Montenegro </item>
<item>Montserrat </item>
<item>Morocco</item>
<item>Mozambique </item>
<item>Myanmar</item>
<item>Namibia </item>
<item>Nauru </item>
<item>Nepal </item>
<item>Netherlands</item>
<item>Netherlands Antilles</item>
<item>New Caledonia (French)</item>
<item>New Zealand </item>
<item>Nicaragua </item>
<item>Niger </item>
<item>Nigeria </item>
<item>Niue </item>
<item>Norfolk Island </item>
<item>Northern Mariana Islands </item>
<item>Norway</item>
<item>Oman </item>
<item>Pakistan </item>
<item>Palau </item>
<item>Panama </item>
<item>Papua New Guinea Port</item>
<item>Paraguay </item>
<item>Peru </item>
<item>Philippines </item>
<item>Poland</item>
<item>Polynesia (French) </item>
<item>Portugal </item>
<item>Puerto Rico </item>
<item>Qatar </item>
<item>Reunion (French) </item>
<item>Romania </item>
<item>Russia </item>
<item>Rwanda </item>
<item>Saint Helena </item>
<item>Saint Kitts & Nevis Anguilla</item>
<item>Saint Lucia </item>
<item>Saint Pierre and Miquelon</item>
<item>Saint Vincent & Grenadines </item>
<item>Samoa </item>
<item>San Marino </item>
<item>Sao Tome and Principe</item>
<item>Saudi Arabia</item>
<item>Senegal </item>
<item>Serbia </item>
<item>Seychelles </item>
<item>Sierra Leone</item>
<item>Singapore </item>
<item>Slovakia </item>
<item>Slovenia </item>
<item>Solomon Islands</item>
<item>Somalia</item>
<item>South Africa </item>
<item>Spain </item>
<item>Sri Lanka </item>
<item>Sudan</item>
<item>Suriname</item>
<item>Swaziland </item>
<item>Sweden </item>
<item>Switzerland</item>
<item>Syria </item>
<item>Taiwan </item>
<item>Tajikistan</item>
<item>Tanzania </item>
<item>Thailand </item>
<item>Togo </item>
<item>Tokelau </item>
<item>Tonga </item>
<item>Trinidad and Tobago </item>
<item>Tunisia </item>
<item>Turkey </item>
<item>Turkmenistan </item>
<item>Turks and Caicos Islands</item>
<item>Tuvalu </item>
<item>U.K. </item>
<item>USA </item>
<item>Uganda </item>
<item>Ukraine </item>
<item>United Arab Emirates</item>
<item>Uruguay </item>
<item>Uzbekistan </item>
<item>Vanuatu</item>
<item>Vatican </item>
<item>Venezuela</item>
<item>Vietnam </item>
<item>Virgin Islands (British) </item>
<item>Virgin Islands (USA)</item>
<item>Wallis and Futuna Islands</item>
<item>Yemen</item>
<item>Zambia </item>
<item>Zimbabwe </item>
</string-array>
</resources>
在 activity 的布局中,在编辑文本前添加微调器
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="@dimen/inner_img_xxxl"
android:dropDownWidth="220dp" />
在 activity 中设置适配器以显示所有国家代码和国家名称。
private void setDataToSpinner() {
final ArrayList<String> countryCodeList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.country_code)));
final ArrayList<String> countryNameList = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.country_name)));
ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countryCodeList) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View row = View.inflate(LoginActivity.this, R.layout.spinner_dropdown_view, null);
TextView countrycodeTV = row.findViewById(R.id.countrycodeTV);
TextView countrynameTV = row.findViewById(R.id.countrynameTV);
countrycodeTV.setText(countryCodeList.get(position));
countrynameTV.setText(countryNameList.get(position));
AppController.getInstance().setTypefaceNeon(countrycodeTV);
AppController.getInstance().setTypefaceNeon(countrynameTV);
return row;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = View.inflate(LoginActivity.this, R.layout.spinner_get_view, null);
TextView countrycodeTV = row.findViewById(R.id.countrycodeTV);
TextView countrynameTV = row.findViewById(R.id.countrynameTV);
AppController.getInstance().setTypefaceNeon(countrycodeTV);
AppController.getInstance().setTypefaceNeon(countrynameTV);
countrycodeTV.setText(countryCodeList.get(position));
countrynameTV.setText(countryNameList.get(position));
return row;
}
};
adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
binding.spinner.setAdapter(adp);}
创建布局simple_spinner_item
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"/>
创建布局spinner_get_view
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/countrycodeTV"
style="?android:attr/spinnerItemStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:maxLines="1"
android:textAlignment="inherit"
android:textSize="@dimen/text_size_button_xs" />
<TextView
android:id="@+id/countrynameTV"
style="?android:attr/spinnerItemStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_toEndOf="@+id/countrycodeTV"
android:ellipsize="marquee"
android:maxLines="1"
android:textAlignment="inherit"
android:textSize="@dimen/text_size_button_xs" />
</RelativeLayout>
谢谢大家的回答, 我找到了解决问题的方法,使用库 'com.hbb20:ccp:1.7.2'.
库是“hbb20 国家代码选择器”。你可以在这里找到它 Github link: https://github.com/hbb20/CountryCodePickerProject