2012-03-06 23 views
12

Android menüm için simgelerim var. Android 3 + üzerinde siyah bir ActionBar kullanıyorum, böylece simgeler beyaz. Bununla birlikte, Android 2.x'de, menü doğal olarak beyazdır, bu da simgelerin neredeyse görünmez olduğu anlamına gelir. Farklı sürümler için farklı menü simgelerini nasıl kullanabilirim? Res/drawable-mdpi-v11 gibi farklı çizilebilir dizinleri kullanarak yapabileceğimi varsayalım, ama başka bir yol olup olmadığını merak ediyorum, bu yüzden sürümleri veya pikselleri ekledikçe farklı dizinler oluşturmak zorunda değilim yoğunlukları.Farklı Android SDK sürümleri ile farklı simgeler kullanın

DÜZENLEME: Android 2.x ile kullanmak için res/drawable-mdpi ve res/drawable-hdpi'ye koyu sürümler koydum ve res/drawable-mdpi-v11 ve res/drawable-hdpi-v11'de hafif sürümler koydum Android 3.x ve üstü ile kullanım için, ancak Android 2.1 (sdk 7) emülatörüm hala ışık sürümünü gösteriyor.

Neden olursa olsun? android dev sitesinde Bulundu

cevap

19

Styles and Themes dev kılavuzunda belirtildiği gibi platform sürümüne dayalı bir tema seçebilirsiniz. Bu gibi res/values ​​/ styles.xml bir stil tanımlayın: Sonra

<style name="ThemeSelector" parent="android:Theme.Light"> 
    ... 
</style> 

bir res/values-v11/klasöründe, (eğer karanlık iseniz, muhtemelen Holo)

<style name="ThemeSelector" parent="android:Theme.Holo"> 
    ... 
</style> 
Temanızı seçin

Ardından o stile simgeler ekleyin. Örneğin, burada HoneycombGallery örnek uygulamasından styles.xml dosyasından bir snippet.

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo"> 
    ... 
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item> 
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item> 
    <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item> 
</style> 

Alt 3 öğesinin tamamı, çizilebilir dizinlerdeki simgelerdir. Çözünürlük özel simgeler kümesi için yine de en az bir klasöre ihtiyacınız olacaktır, ancak ışık & karanlık simgelerini aynı klasörde birleştirebilirsiniz, ancak her bir platform sürümü için farklı simgeler klasörlerine sahip olmanız gerekmeyecektir. Ayrıca, bu gibi değerler/attrs.xml dosyasında referans olarak bunları listelemek gerekir:

<resources> 
    <declare-styleable name="AppTheme"> 
    <attr name="listDragShadowBackground" format="reference" /> 
    <attr name="menuIconCamera" format="reference" /> 
    <attr name="menuIconToggle" format="reference" /> 
    <attr name="menuIconShare" format="reference" /> 
    </declare-styleable> 
</resources> 

hangi kısmında "kullanarak düzen XML içindeki onlara başvurmak mümkün olacak point? attr/NameOfYourDrawable "dereference, like it:

<item android:id="@+id/menu_camera" 
     android:title="@string/camera" 
     android:icon="?attr/menuIconCamera" 
     android:showAsAction="ifRoom" /> 
6

: http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

Uyarı: bu kaynaklar platformu sürümleri arasında değişebilir olduğundan, Android platformu kaynak kimlikleri kullanarak bu simgeleri başvuru olmamalıdır (yani android.R.drawable altında menü simgeler) . Herhangi bir simgeyi veya diğer dahili kullanılabilir kaynakları kullanmak istiyorsanız, uygulama kaynaklarınızda bu simgelerin veya çekilişlerin yerel bir kopyasını saklayın, ardından yerel kopyaya uygulama kodunuzdan başvurmalısınız. Bu şekilde, sistemin kopyası değişse bile, simgelerinizin görünümü üzerinde kontrolü koruyabilirsiniz. Aşağıdaki kılavuzun eksiksiz olması amaçlanmamıştır.

/res/çekilebilir-hdpi (aşağıda Android 2.2 ve için)

(Android 2.3 ve için)/res/çekilebilir-hdpi-v #

ayrıca bir 2.1 bu test denediniz + telefon ve bir emülatör değil? Telefonunuz yoksa, başka bir AVD oluşturmayı deneyin. Korkarım ki ayrı klasörlere ihtiyacın olacak.

Umarım bu yardımcı olur.

+0

Tam olarak ihtiyacım olan şey buydu. Uygulamamdaki açık ve koyu simge setleriyle savaşıyordum. 2'den beri.3 ve altında beyaz menü ve 3.0 ve üstü standart temalar için karanlık bir menü kullanın, sadece bir simge seti kullanamadık. Teşekkürler! – kenyu73

+1

Bu cevap olmalı. İyi çalışıyor –

İlgili konular