2015-09-02 4 views
16

kullanımdan kaldırılmıştır. Burada sorun yaşıyorum. Sdk 22'den 23'e güncelledim ve "getColorStateList()" in önceki sürümü kullanımdan kaldırıldı.getColorStateList

Kodum eski "getColorStateList"

getColorStateList(int id) 

oldu bu

seekBar.setProgressTintList(getResources().getColorStateList(R.color.bar_green)); 
valorslide.setTextColor(getResources().getColorStateList(R.color.text_green)); 

gibiydi Ve yenisi Ben Tema değişken nasıl kullanırım

getColorStateList(int id, Resources.Theme theme) 

mı? Şimdiden teşekkürler.

cevap

22

Tema nesnesi, renk durumu listesini stillemek için kullanılan temadır. Eğer bireysel kaynaklarla herhangi bir özel tema kullanımını kullanmıyorsanız, sen null geçebilir ya da şu anki tema şöyledir: Eğer tema umurumda değil yoksa

TextView valorslide; // initialize 
SeekBar seekBar; // initialize 
Context context = this; 
Resources resources = context.getResources(); 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
    seekBar.setProgressTintList(resources.getColorStateList(R.color.bar_green, context.getTheme())); 
    valorslide.setTextColor(resources.getColorStateList(R.color.text_green, context.getTheme())); 
} else { 
    seekBar.setProgressTintList(resources.getColorStateList(R.color.bar_green)); 
    valorslide.setTextColor(resources.getColorStateList(R.color.text_green)); 
} 

, sadece null adlı geçebilir :

getColorStateList(R.color.text_green, null) 

See the documentation for more explanation. Not, yalnızca yukarıdaki API 23 (Android Hatmi) ve üzerinde yeni bir sürümünü kullanmanız gerekir.

anthonycr cevabı çalışsa da
+2

Ya da, sadece, kaldırılan versiyonu ile sopa. – CommonsWare

+0

@CommonsWare Bu bilgiyi yansıtacak şekilde güncellenmiş olmalıyım. Teşekkürler. – anthonycr

+0

Daha önce denedim ve çöktü. Her iki şeyi şimdi denedim (null ve getTheme()) ve hala çöküyor 14635-14635/golden.imper.csystemhelper E/MessageQueue-JNI ﹕ java.lang.NoSuchMethodError: sanal yöntem getColorStateList (ILandroid/content/res/Kaynaklar $ Tema;) Landroid/content/res/Co lorStateList; sınıfta Landroid/content/res/Resources; ya da onun süper sınıfları ('android.content.res.Resources' beyanı /system/framework/framework.jar içinde görünür) ' – fkchaud

36

, daha kompakt bir sürü sadece sen Destek V4 Kütüphanesinin parçasıdır ContextCompat.getColor(), (kullanmaya gerek

ContextCompat.getColorStateList(context, R.color.haml_indigo_blue); 
+1

Bu, harika çalışıyor! Bunun gibi bir şey var mı, ama arama yöntemleri için mi? "SeekBar.setProgressTintList()" (gerçekten buna ihtiyacım yok, bilgi için)) – fkchaud

+1

Bu yanıt olarak kabul edilmelidir :) – Rajesh

+0

'dan bir' ColorStateList 'yapabilirsiniz özel renk ve kaynak renginden değil? –

0

yazmaktır yüzden herkes için çalışacak önceki API). senin `minSdkVersion` 23 veya daha yüksek, yine eski cihazlarda kaldırılan sürümünü kullanmak gerekecektir olmadıkça olarak

ContextCompat.getColor(context, R.color.my_color)