2011-06-30 15 views
32

Şu anda geliştirdiğim uygulama için, farklı etkinliklerin düzenini kullanıcının Android API düzeyine uyarlamam gerekiyor.Android platform veya API düzeyine adapte yerleşimi

Bunu yapmanın bir yolu var mı? Zaten platform seviyesinde her biri için çekilebilir kaynaklara sahip olursa

cevap

72

Yapmaya çalıştığınız şey, aygıtta hangi API sürümüne bağlı olarak farklı bir düzen gösteriyorsa, configuration qualifiers'u kullanmak istiyorsunuz. alternative resources için özellikler de belgelenmiştir.

bunu yapmak için en temel yolu aşağıdaki gibi biçimlendirilmiş Kullanmak istediğiniz her API seviyesi için bir düzen klasör oluşturmaktır: vN API düzeyi olan benzeri

res/layout/mylayout.xml  (Default) 
res/layout-v4/mylayout.xml (Android 1.6) 
res/layout-v11/mylayout.xml (Android 3.0) 

ve. Spesifik API seviyeleri on this page bulunabilir.

+0

sayesinde !! – Atheh

+0

Yukarıda açıklanan üç dosyaya sahip olsaydım, ancak bir GB Aygıtı kullanırsam hangi dosyayı kullanırım? (layout-v4 veya düzen)? Her platform için farklı bir klasör oluşturmalı mıyım? GB'den itibaren desteklemeyi planlıyorum –

+6

@ FredericYesidPeñaSánchez Bir sonraki en uygun düzende geriye doğru düşecektir. Bu nedenle, res/layout her zaman en sonuncudur, bunu gerektirir, ancak herhangi bir diğeri isteğe bağlıdır. Her birinde farklı olacak bir şeye ihtiyacınız olmadıkça, her platform için bir klasöre ihtiyacınız yoktur. – Jess

3

Andrew Koester, farklı sürüm klasörlerini kullanabileceğinizi belirtti, ancak bunun bir çok iş olduğunu fark ettim çünkü varsayılan düzene geri dönmeyecekti. Layout-v14 kullandıysanız, işe yarayacak, ancak 14'ten sonraki herhangi bir api de bu yerleşime sahip olacak ve başka bir layout-v kullanmalısınız? tekrar geçersiz kılmak için. senin bir sürü yapıyor eğer programlı bu harikalar yaratıyor Tüm ne suçum bağlıdır, ama ben buldum: çok iyi bu işi cevaplanması için

if(Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH || Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1){ 
      //ex. if ics is met then do this 

     }else{ 
      //if api is not ics then do this 
     } 
İlgili konular