Uygulamamda, giriş adresini kullanıcı tarafından ayarlanan yerel ayara göre görüntülemem gerekiyor. Herkes biçimlendirdi veya biçimlendirdi ya da Android platformunda herhangi bir işaretçi var.Android'de yerel ayarlara dayalı adres biçimlendirme
cevap
googlei18n/libaddressinput: Google’s postal address library, powering Android and Chromium'a bakın. Projede iki modül var: android ve: common. Yalnızca aşağıdakilere gereksiniminiz vardır: yerel ayar farkında ekranı için adresi biçimlendirmek için ortak.
import android.location.Address;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import com.google.i18n.addressinput.common.AddressData;
import com.google.i18n.addressinput.common.FormOptions;
import com.google.i18n.addressinput.common.FormatInterpreter;
...
public static String getFormattedAddress(@NonNull final Address address,
@NonNull final String regionCode) {
final FormatInterpreter formatInterpreter
= new FormatInterpreter(new FormOptions().createSnapshot());
final AddressData addressData = (new AddressData.Builder()
.setAddress(address.getThoroughfare())
.setLocality(address.getLocality())
.setAdminArea(address.getAdminArea())
.setPostalCode(address.getPostalCode())
.setCountry(regionCode) // REQUIRED
.build());
// Fetch the address lines using getEnvelopeAddress,
List<String> addressFragments = formatInterpreter.getEnvelopeAddress(addressData);
// join them, and send them to the thread.
return TextUtils.join(System.getProperty("line.separator"),
addressFragments);
}
NOT: formatlı tercüman adres formatını çeker çünkü bu nerede RegionCode, geçerli bir ISO2 ülke kodu olması gerekir. (Eğer merak ediyorsanız formatlar listesi için RegionDataConstants'a bakın.)
Adresin 2 harfli CLDR bölge kodunu ayarlar; AdresData # getPostalCountry(). oluşturucuya iletilen diğer değerlerden farklı olarak bölge kodu hiçbir zaman boş olamaz.
Örnek: ABD
801 KESTANE ST
ST. LOUIS, MO 63101
Örnek: JP
〒1600023
NishiShinjuku
3-2-11 NishiShinjuku SHINJUKU-KU TOKYO
Bu tür kütüphaneyi araştırıyorum, cevap için çok teşekkürler! –
Diğer platformlarda biraz yerelleştirme yaptım. İşte Android için yerelleştirme için bir kılavuz: http://developer.android.com/guide/topics/resources/localization.html#using-framework
Bir yaklaşım, istediğiniz her yerel ayar için Adres düzenine karşılık gelen MessageFormat dizelerini depolamak için yerelleştirilmiş kaynakları kullanmak olacaktır. Buradan, küresel adres bloğu standartlarına bir başvuruya ve ihtiyacınız olan her yerel ayar için biçim dizeleri oluşturmanıza gerek duyarsınız.
Teşekkürler, aynı Android lokalizasyonuna başvurduğum Adres API'sı var ama seçilen formata bağlı olarak adres formatı verilmiyor. – shailbenq
Sanırım, mantığın zaten girilmiş bir posta adresinin bir yerel ayara ait olması ve onu biçimlendirmenin sabit bir yolu olması. Örneğin, Alman sözleşmelerinin bir ABD posta adresini ya da başka bir yolla ifade etmesinin bir anlamı yoktur. ContactsContract veritabanına erişiyorsanız, sadece StructuredPostal öğesinin biçimlendirilmiş adres alanını kullanın. – tiguchi
Bu [Google örnek kodu] (http://developer.android.com/training/basics/location/geocoding.html) öneriye benzer bir fikir kullanarak bir adres satırı biçimlendiriyorlar. Daha kolay bir yol olup olmadığından emin değil. – James
i nedenini öğrenebilir miyim -1 derecelendirme bu soru için. – shailbenq