Uygulamalar belirli bir kültüre özgü kaynaklar içerir. Örneğin, bir uygulama geçerli yerel ayarın dilini seçin.
Oturum boyunca ve uygulamanızın geri kalanından ayrılan kültüre özgü kaynakları Android çözümlemeleri sistem yerel ayarına bağlı olarak dile ve kültüre özel kaynaklar Siz , oluşturmanız gerekir.
Uygulamanızı kullanan kişilerin kültürlerine göre uyarlanmış kaynaklar
uygulamasını indirin. Sizin için geçerli olan herhangi bir kaynak türünü sağlayabilirsiniz.
ve kullanıcılarınızın dili ve kültürüne uygun olmalıdır. Örneğin,
aşağıdaki ekran görüntülerinde,
cihazın varsayılan en_US
yerel ayarı ve İspanyolca
es_ES
yerel ayarı.
![Uygulamada
geçerli yerel ayara bağlı olarak farklı metin ve simge](https://developer.android.com/static/images/training/languages_01.png?authuser=0000&hl=tr)
Şekil 1. Uygulamanın kullanımı, kullanılan teknolojiye göre Mevcut yerel ayar.
Android SDK'yı kullanarak proje oluşturduğunuzda
Bu araçlar, sayfanın üst düzeyinde bir res/
dizini oluşturur.
gösterir. Bu res/
dizini içinde çeşitli kaynakların alt dizinleri bulunur
bulunur. Ayrıca res/values/strings.xml
gibi birkaç varsayılan dosya da vardır
dosyasını seçin.
Farklı dilleri desteklemek, yerel ayara özel kaynakları kullanmanın ötesine geçer. Bazı kullanıcılar sağdan sola (RTL) komut dosyalarını kullanan bir dil seçer. Örneğin: Kullanıcı arayüzü yerel ayarı için Arapça veya İbranice. Kullanıcı arayüzü yerel ayarını İngilizce gibi LTR komut dosyaları içerik görüntüleyebilir veya oluşturabilir bunu RTL komut dosyalarını kullanan bir dilde yapmanız gerekir. Her iki kullanıcı türünü de desteklemek için uygulamanızın şunları yapması gerekir:
- Sağdan sola yerel ayarları için RTL kullanıcı arayüzü düzeni kullanın.
- İçinde görüntülenen metin verilerinin yönünü algıla ve bildir biçimlendirilmiş iletilerdir. Genellikle bir yöntem çağırın bu rehberi kullanarak metin verilerinin yönünü gösterir.
Yerel ayar dizinleri ve kaynak dosyaları oluşturma
Daha fazla yerel ayar için destek eklemek üzere
res/
Her bir dizinin adı şu biçime uygun olmalıdır:
<resource type>-b+<language code>[+<country code>]
Örneğin, values-b+es/
dizesi içeriyor
es
dil koduna sahip yerel ayarlar için kaynaklar. Aynı şekilde,
mipmap-b+es+ES/
, es
bulunan yerel ayarların simgelerini içerir
dil kodu ve ES
ülke kodu.
Android, web sitesinin yerel ayarlarına göre uygun kaynakları cihazı otomatik olarak sunar. Daha fazla bilgi için bkz. Alternatif kaynaklar sunun.
Hangi yerel ayarları destekleyeceğinize karar verdikten sonra kaynak alt dizinlerini oluşturun ve dosyası olarak da kaydedebilir. Örnek:
MyProject/ res/ values/ strings.xml values-b+es/ strings.xml mipmap/ country_flag.png mipmap-b+es+ES/ country_flag.png
Kaynak dosyalarını yerelleştirilmiş kaynaklarla doldurun. Aşağıda, yerelleştirilmiş dize ve resim kaynak dosyası örnekleri verilmiştir:
/values/strings.xml
içindeki İngilizce dizeler (varsayılan yerel ayar):
<resources> <string name="hello_world">Hello World!</string> </resources>
/values-b+es/strings.xml
içindeki İspanyolca dizeler (es
yerel ayar):
<resources> <string name="hello_world">¡Hola Mundo!</string> </resources>
içinde ABD bayrağı simgesi (varsayılan yerel ayar)
/mipmap/country_flag.png
:
![Amerika bayrağı simgesi
Amerika Birleşik Devletleri](https://developer.android.com/static/images/training/languages_us_flag.png?authuser=0000&hl=tr)
Şekil 2. Varsayılan (en_US) yerel ayar için kullanılan simge.
Şu konumda İspanya bayrağı simgesi (es_ES
yerel ayar)
/mipmap-b+es+ES/country_flag.png
:
![Bayrak simgesi
İspanya](https://developer.android.com/static/images/training/languages_es_flag.png?authuser=0000&hl=tr)
Şekil 3. es_ES
yerel ayarı için kullanılan simge.
Not: Yapılandırma niteleyicileri kullanabilirsiniz. örneğin, yerel ayar niteleyicisi gibi. Örneğin, ekip arkadaşlarınızın bit eşlem çekilebilirlerinizin yerelleştirilmiş sürümlerini sağlayın. Daha fazla bilgi için Uygulamanızı yerelleştirme başlıklı makaleyi inceleyin.
Uygulamanızdaki kaynakları kullanma
her kaynağın name
özelliği:
R.<resource type>.<resource name>
. Çok çeşitli
Aşağıdaki örneklerde gösterildiği gibi, bir kaynağı bu şekilde kabul eden yöntemlerin listesini görebilirsiniz:
Kotlin
// Get a string resource val hello = resources.getString(R.string.hello_world) // Or supply a string resource to a method that requires a string TextView(this).apply { setText(R.string.hello_world) }
Java
// Get a string resource String hello = getResources().getString(R.string.hello_world); // Or supply a string resource to a method that requires a string TextView textView = new TextView(this); textView.setText(R.string.hello_world);
XML dosyalarında söz dizimiyle bir kaynağa başvuruda bulunabilirsiniz.
XML her seferinde @<resource type>/<resource name>
özelliği, aşağıdaki örnekte gösterildiği gibi uyumlu bir değer kabul eder:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/country_flag" />
Not: Kullanıcı dil ayarlarına öncelik verildiğinden emin olmak için
resConfigs
özelliğini kullanarak uygulamanızın desteklediği dilleri doğru bir şekilde belirtin. Örneğin,
daha fazla bilgi için
Uygulamanızın desteklediği dilleri belirtme.
İletilerdeki metni biçimlendirme
Bir uygulamada en sık yapılan görevlerden biri metin biçimlendirmedir. Yerelleştirilmiş mesajlar uygun konumlara metin ve sayısal veriler eklenerek biçimlendirilir. Ne yazık ki RTL kullanıcı arayüzü veya RTL verileriyle çalışırken basit biçimlendirme hatalı, hatta okunamayan metin çıkışı görüntüleyebilir.
Arapça, İbranice, Farsça ve Urduca gibi diller RTL yazılır. Ancak, sayılar ve yerleştirilmiş öğeler gibi bazı öğeler LTR metinleri, LTR metinlerinin içinde LTR olarak yazılır. İngilizce de dahil olmak üzere LTR alfabeleri kullanan diller de çünkü RTL görüntülenmesi gereken yerleşik RTL komut dosyaları içerebilirler.
Uygulamalar genellikle bu tür zıt yönde yerleştirilmiş metin örnekleri oluşturur. örneğin rastgele bir metnin metin verilerini ekleyerek yerelleştirilmiş mesajlara rastgele bir metin yönü eklemek. Yol tariflerinin bu şekilde karıştırılması, çoğu zaman etkinliğin zıt yönde metin başlayıp bittiği için uygulama tarafından oluşturulur metin, kötü bir kullanıcı deneyimine neden olabilir.
Sistemin varsayılan olarak iki yönlü metin işlemesi genellikle beklendiği gibi metin alırsanız, uygulamanız çalışırken metin mesajı yerelleştirilmiş bir mesaja ekler. Aşağıda bazı durumlarda metinlerin yanlış görünme olasılığı bulunan yerler:
-
İletinin başına eklenen metin:
PERSON_NAME sizi arıyor
-
Adres veya telefon numarası gibi bir rakamla başlayan metinler:
987 654-3210
-
Telefon numarası gibi noktalama işaretleriyle başlayan metinler:
+19876543210
-
Noktalama işareti ile biten metin:
Emin misiniz?
-
Her iki yönü de içeren metin:
בััי kelimesi İbranice'de muz anlamına gelir.
Örnek
Bir uygulamanın bazen, şunu mu demek istediniz: %s?" (çalışma zamanında %s yerine bir adres eklenmiş). Uygulama farklı kullanıcı arayüzü yerel ayarlarını desteklediğinden mesaj, yerel ayara özgü bir kaynağında yer alır ve cihaz bir RTL yerel ayarına ayarlandığında sağdan sola yönünü kullanır. Örneğin, bir İbranice için Kullanıcı arayüzünde mesaj şu şekilde görünür:
นאClaim וו GOOGLE sıraya ?> %s ne olacak?
Ancak önerilen adres metin içermeyen bir veritabanından geliyor olabilir yerel ayarın dilinde. Örneğin, adres bir yerle ilgiliyse İngilizce metin kullanılarak veritabanında görünür. Örneğin adres "15 Bay Street, Laurel, California" herhangi bir bilgi sağlamadan RTL mesajına sonuç beklenmiyor veya doğru:
Claimא}{/ ווו ל 15 Bay Street, Laurel, Kanada'da mı?
Bina numarası adresin sağında değil, sağ tarafında görünür olduğu gibi bırakılır. Bu durumda ev numarası tuhaf bir posta kodu gibi görünür girin. Aynı sorun, LTR metin yönünü kullanır.
Açıklama ve çözüm
Bu örnekteki sorun, metin biçimlendiricisinin "15" değerini belirtin bir bölümü olduğundan sistem, "15" önce gelen RTL metninin veya gelen LTR metninin bir parçasıdır. teşekkür ederiz.
Bu sorunu çözmek için BidiFormatter
içindeki unicodeWrap()
yöntemini kullanın
sınıfını kullanır. Bu yöntem, dizenin yönünü algılar ve Unicode ile sarmalar
biçimlendirme karakterlerinin olması gerekir.
Aşağıdaki kod snippet'i, tablodaki
unicodeWrap()
:
Kotlin
val mySuggestion = "15 Bay Street, Laurel, CA" val myBidiFormatter: BidiFormatter = BidiFormatter.getInstance() // The "did_you_mean" localized string resource includes // a "%s" placeholder for the suggestion. String.format(getString(R.string.did_you_mean), myBidiFormatter.unicodeWrap(mySuggestion))
Java
String mySuggestion = "15 Bay Street, Laurel, CA"; BidiFormatter myBidiFormatter = BidiFormatter.getInstance(); // The "did_you_mean" localized string resource includes // a "%s" placeholder for the suggestion. String.format(getString(R.string.did_you_mean), myBidiFormatter.unicodeWrap(mySuggestion));
Çünkü "15" şimdi de metnin içinde LTR olarak belirtilirse, doğru konumda görüntülenir:
電א Claimכוו GOOGLE ל 15 Bay Street, Laurel, CA'da bulunabilir mi?
unicodeWrap()
yöntemini şurada kullan:
aşağıdakilerden birinin geçerli olması dışında, yerelleştirilmiş bir iletiye eklediğiniz her metin parçası:
- Metin, URI gibi makine tarafından okunabilen bir dizeye ekleniyor veya SQL sorgusu olabilir.
- Metin parçasının zaten düzgün bir şekilde kaydırıldığını biliyorsunuz.
Not: Uygulamanız Android 4.3 (API düzeyi 18) sürümünü veya
daha yüksek, şurada bulunan BidiFormatter
sürümünü kullanın:
Android Çerçevesi. Aksi halde,
Destek Kitaplığı'nda BidiFormatter
bulundu.
Sayıları biçimlendirme
Tekliflerinizi otomatikleştirmek ve optimize etmek için biçim dizeleri kullanın, mantık:
Kotlin
var myIntAsString = "$myInt"
Java
String myIntAsString = String.format("%d", myInt);
Bu, sayıları yerel ayarınıza göre uygun şekilde biçimlendirir. Bu durum, farklı bir basamak grubu kullanmayı da
Bunu kullandığınızda
oluşturmak için String.format()
Bir cihazda, kendi rakam kümesini kullanan bir yerel ayara (ör. Farsça) ayarlanmış SQL sorgusu
ve çoğu Arapça yerel ayarda, sorgu için parametrelerden herhangi biri
sayılardır. Bunun nedeni, sayının yerel ayardaki basamaklarda biçimlendirilmiş olmasıdır.
bu rakamlar SQL'de geçersizdir.
ASCII biçimli sayıları korumak ve SQL sorgusunun geçerli kalmasını sağlamak için
Bu da
String.format()
ilk parametre olarak bir yerel ayar ekler. Yerel ayar bağımsız değişkenini kullanma
Locale.US
Düzen yansıtmayı destekleyin
RTL komut dosyalarını kullanan kişiler, aşağıdakileri içeren RTL kullanıcı arayüzünü tercih ederler: sağa hizalı menüler, sağa hizalı metin ve ileriye doğru çıktı.
Şekil 4'te, ekranın sol alt kısmındaki Ayarlar uygulaması ve RTL karşılığı:
![Bildirim alanı, sağ üst köşenin yakınına sağa hizalanır.
uygulama çubuğundaki menü düğmesi sol üst köşenin yakınında,
Ekranın ana bölümündeki içerik sola hizalı ve gösteriliyor
sol alt köşeye yakın bir yerde ve sol alt köşeye yakın
solu işaret ediyor.](https://developer.android.com/static/images/training/basics/ltr-display.png?authuser=0000&hl=tr)
![Bildirim alanı, sol üst köşenin yakınında sola hizalanır.
uygulama çubuğundaki menü düğmesi sağ üst köşeye yakınken,
ekranın ana kısmı sağa hizalı ve sağdan sola olarak görünüyor
geri düğmesi sağ alt köşeye yakındır ve
sağ](https://developer.android.com/static/images/training/basics/rtl-display.png?authuser=0000&hl=tr)
Uygulamanıza RTL desteğini eklerken şu noktaları göz önünde bulundurun:
- Sağdan sola metin yansıtma, yalnızca şu anda çalışan cihazlarda kullanılan uygulamalarda desteklenir Android 4.2 (API düzeyi 17) veya sonraki sürümler. Metin yansıtmayı nasıl destekleyeceğinizi öğrenmek için daha eski cihazlarda Destek sağlama hakkında daha fazla bilgi edinin.
- Uygulamanızın sağdan sola metin yönünü destekleyip desteklemediğini test etmek için geliştirici seçeneklerini kullanarak test edin ve kullanıcıları davet edin RTL komut dosyalarını kullanan kitlelere dayanıyor.
Not: Aşağıdakilerle ilgili ek tasarım yönergelerini görüntülemek için: uygun olan ve olmayan öğelerin listesi dahil olmak üzere düzen yansıtma görmek için Çift yönlülük tavsiye edilir.
Uygulamanızdaki kullanıcı arayüzü düzenini RTL yerel ayarında sağdan sola olarak yansıtmak için aşağıdaki bölümlerde belirtilen adımları tamamlayın.
Derleme ve manifest dosyalarını değiştirme
Uygulama modülünüzün build.gradle
dosyasını ve uygulama manifest dosyasını değiştirin
şu şekilde:
build.gradle (Module: app)
Eski
android { ... defaultConfig { targetSdkVersion 17 // Or higher ... } }
Kotlin
android { ... defaultConfig { targetSdkVersion(17) // Or higher ... } }
AndroidManifest.xml
<manifest ... > ... <application ... android:supportsRtl="true"> </application> </manifest>
Not: Uygulamanız Android 4.1.1 (API düzeyi 16) sürümünü veya
değeri düşükse android:supportsRtl
özelliği,
start
end
otomatik olarak yeniden ekler. Bu durumda sağdan sola düzeni yansıtma
uygulamanıza otomatik olarak eklenir.
Mevcut kaynakları güncelleme
left
ve right
değerlerini start
olarak dönüştürün ve
Mevcut düzen kaynak dosyalarınızda sırasıyla end
.
Bu sayede çerçeve, uygulamanızın kullanıcı arayüzü öğelerini
kullanıcının dil ayarlarına bağlıdır.
Not: Kaynaklarınızı güncellemeden önce aşağıdakilerin nasıl yapılacağını öğrenin: eski uygulamalar için destek sağlayın veya Android 4.1.1 (API düzeyi 16) ve önceki sürümleri hedefleyen uygulamalar.
Çerçevenin sağdan sola hizalama özelliklerini kullanmak için düzen dosyalarınızı da içerebilir.
Tablo 1. Özellikleri Uygulamanız birden fazla yazılı yol tarifini desteklediğinde kullanın
Tablo 2'de, sistemin
hedef SDK sürümü (left
ve right
özellikleri olsun)
tanımlanmış olup start
ve end
özelliklerinin
tanımlanmıştır.
Tablo 2. Kullanıcı arayüzü öğesi hizalama davranışına dayalı hedef SDK sürümüne ve tanımlı özelliklere göre
|
Sol ve sağ tanımlandı mı? | Başlangıcı ve bitişi tanımlı mı? | Sonuç |
---|---|---|---|
Evet | Evet | Evet |
start ve end kullanılıyor ve geçersiz kılınıyor
left ve right
|
Evet | Evet | Hayır | left ve right kullanılıyor |
Evet | Hayır | Evet | start ve end kullanılıyor |
Hayır | Evet | Evet |
left ve right kullanılıyor (start ve
end yoksayılır)
|
Hayır | Evet | Hayır | left ve right kullanılıyor |
Hayır | Hayır | Evet |
start ve end , left ve
right
|
Yol tarifi ve dile özel kaynaklar ekleyin
Bu adım, düzeninizin, çekilebilirlerinizin ve farklı diller için özelleştirilmiş değerler içeren değer kaynak dosyaları ve metinle yol tarifi alabiliyorsunuz.
Android 4.2 (API düzeyi 17) ve sonraki sürümlerde -ldrtl
(düzen-yönü sağdan sola) ve -ldltr
(düzen-yönü-soldan sağa) kaynak niteleyicileri içerir. Geriye dönük olarak
mevcut kaynaklarla uyumluluğu sağlamakla birlikte, Android'in eski sürümleri
doğru metin yönünü belirlemek için kaynağın dil niteleyicilerini kullanır.
RTL komut dosyalarını desteklemek için belirli bir düzen dosyası eklemek istediğinizi varsayalım.
müzakeresine yardımcı oluyor. Bunu yapmak için
res/
dizininizdeki layout-ldrtl/
dizininde,
aşağıdaki örnekte gösterilmektedir:
res/ layout/ main.xml This layout file is loaded by default. layout-ldrtl/ main.xml This layout file is loaded for languages using an RTL text direction, including Arabic, Persian, and Hebrew.
Düzenin yalnızca Arapça metin kullandığınızda dizin yapınız şu şekilde görünür:
res/ layout/ main.xml This layout file is loaded by default. layout-ar/ main.xml This layout file is loaded for Arabic text. layout-ldrtl/ main.xml This layout file is loaded only for non-Arabic languages that use an RTL text direction.
Not: Dile özel kaynaklar, varsayılan düzene göre öncelikli olan düzene özgü kaynaklar kaynaklar.
Desteklenen widget'ları kullanma
Android 4.2 (API düzeyi 17) sürümünden itibaren çerçeve kullanıcı arayüzü öğelerinin çoğu RTL'yi desteklemektedir.
otomatik olarak yüklenir. Bununla birlikte,
ViewPager
, RTL metnini desteklemiyor
girin.
Ana ekran widget'ları sağdan sola metin yönünü desteklediği sürece
ilgili manifest dosyalarında,
android:supportsRtl="true"
Eski uygulamalar için destek sağlama
Uygulamanız Android 4.1.1 (API düzeyi 16) veya önceki sürümleri hedefliyorsa şunu ekleyin:
Ek olarak left
ve right
özellikleri
start
ve end
.
Düzeninizin sağdan sola metin yönünü kullanması gerekip gerekmediğini kontrol etmek için şu mantığı kullanın:
Kotlin
private fun shouldUseLayoutRtl(): Boolean { return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { View.LAYOUT_DIRECTION_RTL == layoutDirection } else { false } }
Java
private boolean shouldUseLayoutRtl() { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { return View.LAYOUT_DIRECTION_RTL == getLayoutDirection(); } else { return false; } }
Not: Uyumluluk sorunlarını önlemek için 23.0.1 sürümünü kullanın veya daha yüksek Android SDK Derleme Araçları.
Geliştirici seçeneklerini kullanarak test etme
Android 4.4 (API düzeyi 19) veya sonraki sürümleri çalıştıran cihazlarda Sağdan sola düzeninin yönünü zorunlu kıl cihaz üzerinde geliştirici seçeneklerini inceleyebilirsiniz. Bu ayar RTL'de LTR komut dosyaları kullanan metinleri (ör. İngilizce metin) görmenizi sağlar yatırım yapmanız önemlidir.
Uygulama mantığını güncelleyin
Bu bölümde, uygulamanızın mantığının belirli yönleriyle uygulamanızı birden fazla metin yol tarifini işleyecek şekilde uyarlarken güncelleme yapabilirsiniz.
Mülk değişiklikleri
RTL ile ilgili herhangi bir özellikte (ör. düzen) değişikliği işlemek için
yön, düzen parametreleri, dolgu, metin yönü, metin hizalaması veya
çekilebilir konumlandırmayı kullanın:
onRtlPropertiesChanged()
.
geri arama. Bu geri çağırma, mevcut düzen yönünü ve dolayısıyla
bir etkinliğin View
nesnesini uygun şekilde güncelleyin.
Görüntüleme sayısı
Bir etkinliğin doğrudan parçası olmayan bir kullanıcı arayüzü widget'ı oluşturuyorsanız bir iletişim kutusu veya kısa mesaj benzeri bir kullanıcı arayüzü öğesi gibi, görünüm hiyerarşisini düzenin yönünü belirler. Aşağıdaki kod snippet'i bu sürecin nasıl tamamlanacağını gösterir:
Kotlin
val config: Configuration = context.resources.configuration view.layoutDirection = config.layoutDirection
Java
final Configuration config = getContext().getResources().getConfiguration(); view.setLayoutDirection(config.getLayoutDirection());
View
sınıfının bazı yöntemleri için ek işlemler gerekir
üzerinde düşünme:
onMeasure()
- Görüntüleme ölçümleri, metnin yönüne göre değişiklik gösterebilir.
onLayout()
- Kendi düzen uygulamanızı oluşturuyorsanız
onLayout()
sürümünüzdesuper()
ve uyarlayın özel mantığınızı kullanarak RTL komut dosyalarını destekler. onDraw()
- Bir özel görünüm uyguluyorsanız veya bir görünüme gelişmiş işlev ekliyorsanız
yoksa, kodunuzu RTL komut dosyalarını destekleyecek şekilde güncellemeniz gerekir. Şunu kullanın:
aşağıdaki kodu kullanmanız gerekir:
Kotlin
// On devices running Android 4.1.1 (API level 16) and lower, // you can call the isLayoutRtl() system method directly. fun isLayoutRtl(): Boolean = layoutDirection == LAYOUT_DIRECTION_RTL
Java
// On devices running Android 4.1.1 (API level 16) and lower, // you can call the isLayoutRtl() system method directly. public boolean isLayoutRtl() { return (getLayoutDirection() == LAYOUT_DIRECTION_RTL); }
Çekilebilir içerikler
RTL düzeni için yansıtılması gereken bir çiziminiz varsa Aşağıdaki adımlardan birini cihazda çalışan Android sürümüne göre yapın:
-
Android 4.3 (API düzeyi 18) ve önceki sürümleri çalıştıran cihazlarda
-ldrtl
kaynak dosyalarını ekleyip tanımlayın. -
Android 4.4 (API düzeyi 19) ve sonraki sürümlerde
android:autoMirrored="true"
, çekilebilir dosyanızı tanımlarken Bu da sistemin, RTL düzeni yansıtmasını sizin için işleyebilmesini sağlar.Not:
android:autoMirrored
iki yönlü yansıtma yalnızca basit çekilebilir öğeler için tüm çekilebilir öğenin grafiksel bir yansımasıdır. Çekilebilir malzemeniz birden fazla öğe içeriyorsa veya çizilebilir özelliğinizi yansıtırken yansıtmayı kendiniz gerçekleştirebilirsiniz. Her zaman İki yönlü bir uzmanla görüşerek kullanıcılara anlam ifade eder.
Yerçekimi
Uygulamanızın düzen kodunda Gravity.LEFT
veya
Gravity.RIGHT
, bunları değiştir
Gravity.START
ve
Sırasıyla Gravity.END
.
Gravity.LEFT
veya Gravity.RIGHT
mülk,
absoluteGravity
değerini
layoutDirection
.
Örneğin, aşağıdaki kodu kullanıyorsanız:
Kotlin
when (gravity and Gravity.HORIZONTAL_GRAVITY_MASK) { Gravity.LEFT -> { // Handle objects that are left-aligned. } Gravity.RIGHT -> { // Handle objects that are right-aligned. } }
Java
switch (gravity & Gravity.HORIZONTAL_GRAVITY_MASK) { case Gravity.LEFT: // Handle objects that are left-aligned. break; case Gravity.RIGHT: // Handle objects that are right-aligned. break; }
Şu şekilde değiştirin:
Kotlin
val absoluteGravity: Int = Gravity.getAbsoluteGravity(gravity, layoutDirection) when (absoluteGravity and Gravity.HORIZONTAL_GRAVITY_MASK) { Gravity.LEFT -> { // Handle objects that are left-aligned. } Gravity.RIGHT -> { // Handle objects that are right-aligned. } }
Java
final int layoutDirection = getLayoutDirection(); final int absoluteGravity = Gravity.getAbsoluteGravity(gravity, layoutDirection); switch (absoluteGravity & Gravity.HORIZONTAL_GRAVITY_MASK) { case Gravity.LEFT: // Handle objects that are left-aligned. break; case Gravity.RIGHT: // Handle objects that are right-aligned. break; }
Bu, her bir tablodaki mevcut kodunuzu sola hizalı ve
sağa hizalı değerleri (start
ve ) kullansanız bile
Ağırlıklılık değerleriniz için end
.
Not: Yer çekimi ayarlarınızı uygularken
içeren Gravity.apply()
aşırı yüklenmiş sürümü
layoutDirection
bağımsız değişken.
Kenar boşlukları ve dolgu
Uygulamanızda RTL komut dosyalarını desteklemek için aşağıdakilerle ilgili en iyi uygulamaları izleyin: kenar boşluğu ve dolgu değerleri:
-
getMarginStart()
ve -getMarginEnd()
yöne özgü özellik eşdeğerlerileftMargin
verightMargin
. -
setMargins()
kullanırkenleft
ve Uygulamanız RTL komut dosyaları algılarsaright
bağımsız değişken. -
Uygulamanız özel dolgu mantığı içeriyorsa geçersiz kılın
setPadding()
vesetPaddingRelative()
.
Uygulamaya özgü dil tercihlerini destekleyin
Çok dilli kullanıcılar çoğunlukla sistem dillerini İngilizce gibi tek bir dile ayarlar. belirli uygulamalar için Felemenkçe, Çince veya Hintçe gibi başka diller seçmek istediğinden emin olun. Yardım için sunduğu diğer özellikler ise Android 13'te şunlar için şu özellikleri sunuyor: birden çok dili destekleyen uygulamalar:
-
Sistem ayarları: kullanıcıların seçim yapabileceği merkezi bir konum her uygulama için tercih edilen dili seçin.
Uygulamanız,
android:localeConfig
özelliğini manifest'ini kullanabilirsiniz. Daha fazla bilgi edinmek için işlevini anlatan bir kaynak oluşturmak dosyanızı uygulamanızın manifest dosyasında beyan etmeniz gerekir. -
Ek API'ler:
setApplicationLocales()
vegetApplicationLocales()
yöntem:LocaleManager
, uygulamaların sistem dilinden farklı bir dil ayarlamasına izin ver belirler.Özel uygulama içi dil seçiciler kullanan uygulamalar, kullanıcılara dillerini seçtikleri dilden bağımsız olarak tutarlı bir kullanıcı deneyimi sunarlar. tercihler. Herkese açık API'ler, standart kod miktarını azaltmanıza da yardımcı olur. bölünmüş APK'ları destekler. Ayrıca, Otomatik Yedekleme özelliğini uygulama düzeyindeki kullanıcı dil ayarlarını depolamak için.
Önceki Android sürümleriyle geriye dönük uyumluluk için eşdeğer API'ler de mevcuttur. AndroidX'te. Önerilerimiz Appcompat 1.6.0-beta01 veya daha yüksek.
Daha fazla bilgi edinmek için yeni değişiklikleri uygulamak API'ler.
Ayrıca bkz.
Ek kaynaklar
Eski cihazları destekleme hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları inceleyin:
Blog yayınları
- Alıcı Uygulamaları Erişilebilir ve Farklı Cihazlarla Uyumlu Hale Getirme
- Şunun için yazıyor: global kitlelere ulaşma