XamarinXamarin.AndroidXamarin.Forms

Xamarin’de Malzeme Teması’nı Özelleştirme

İçindekiler

Bu yazıda Malzeme Teması konusuna daha yakından bakacağız. Android platformundaki yerleşik temaları ve Xamarin.Forms’un varsayılan temasını birlikte inceleyeceğiz. Ve son olarak, Xamarin.Forms’da özel bir tema oluşturup kullanacağız.

Malzeme Teması Nedir?

Öncelikle Malzeme Teması ile ilgili şunları belirtmekte fayda var.

Malzeme Teması, sandığınız gibi sistem çapında bir “tema” değildir. Başka bir deyişle, kullanıcıların temalar arasından seçim yaparak değiştirebileceği bir ayar değildir. Aksine, uygulamanızın görünümünü özelleştirmek için kullanabileceğiniz temel bir stildir.

Malzeme Teması ile markanızı temsil eden temalar oluşturabilirsiniz. Yani Android’in varsayılan renklerini geçersiz kılarak statusBar, navigationBar gibi alanlara istediğiniz rengi verebilirsiniz. Özel temalar oluşturabilir ve uygulama içerisinde kullanabilirsiniz.

Hatta görünümler için kendi tarzınızı bile yaratabilirsiniz. Örneğin, CarouselView’ün arka plan rengini veya genişliğini özel temanızla eşleşecek şekilde değiştirebilirsiniz. Yani Xamarin’in yerleşik kontrollerini Malzeme Teması ile dilediğinizce özelleştirebilirsiniz.

Malzeme Teması, Xamarin’de Android 5.0 (Lollipop) ile başladı. Yani bu özellik Android 5.0’da yerleşik olarak gelir ve uygulama tarafından kullanılabilir. Eğer uygulamanızı Android 5.0’dan daha eski bir sürümde çalıştırırsanız, eski temaya geri dönecektir.

Gereksinimler

Xamarin uygulamalarında Malzeme Teması kullanmak için bazı gereksinimler vardır. Eğer düşük sürümleri kullanıyorsanız aşağıdaki minimum sistem gereksinimlerine göre güncelleyin.

  • Xamarin.Android – Xamarin.Android 4.20 veya üstü
  • Java JDK 1,8 – JDK 1.7 API seviyesi 23 ve altı. JDK 1.8 Oracle
  • Android SDK – Android 5,0 (API 21)

Android’de Malzeme Teması

Android, üç farklı malzeme teması sağlar:

  • Theme.Material – Malzeme temasının karanlık versiyonu. Android 5.0’da varsayılan bir özelliktir.
  • Theme.Material.Light – Malzeme temasının açık versiyonu.
  • Theme.Material.Light.DarkActionBar – Materyal temasının açık versiyonu, karanlık bir eylem çubuğu.

Bu temalar şöyle görünür:

Android yerleşik malzeme temaları
Android yerleşik malzeme temaları

Malzeme Temasını kullanmanın iki yolu vardır:

1 Birincisi, herhangi bir özelleştirme olmadan uygulama düzeyinde yerleşik olarak kullanmaktır. Yani, Aktivite düzeyinde herhangi bir değişiklik yapmadan tüm uygulama boyunca tek bir tema kullanırsınız.

2 Aktivite düzeyinde bir tema yapılandırarak kullanmaktır. Bu, her aktivite için farklı temalar atamak anlamına gelir. Eğer her Aktivitenin farklı bir görünüme sahip olmasını istiyorsanız, her bir Aktivite için bir tema oluşturmanız gerekir.

Uygulama Teması

Xamarin.Andorid uygulamalarında varsayılan tema Theme.Material’dir. Yani karanlık tema. Bu şekilde, tüm uygulama boyunca aynı tema görünür.

Bu temayı değiştirmek için, AndroidManifest.xml dosyasındaki uygulama düğümünün android: theme özniteliğini değiştirmelisiniz . Yukarıda bahsettiğim Theme.Material, Theme.Material.Light veya Theme.Material.Light.DarkActionBar arasından seçim yapabilirsiniz.

<application android:label="MyApp" 
             android:theme="@android:style/Theme.Material.Light">
</application>

Alternatif olarak, AssemblyInfo.cs dosyasındaki Tema özniteliğini aşağıdaki gibi değiştirebilirsiniz.

[assembly: Application(Theme="@android:style/Theme.Material.Light")]

Activity Teması

Uygulamanızdaki her Aktivitenin farklı bir görünüme sahip olmasını istiyorsanız, her Aktiviteye özel bir Tema kullanmalısınız. Bunu yapmak için, aşağıdaki gibi her Activity tanımının üzerine [Activity] özelliğini ekleyin.

[Activity(Theme = "@android:style/Theme.Material.Light",
          Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]  

Özel Temaları Kullanma

Yukarıda bahsettiğim karanlık, açık ve karanlık temalar, Android’in yerel sürümünde bulunan temalardır. Xamarin.Forms’da bu temalar yerine “MainTheme” adlı bir tema vardır. Yani bildiğimiz tema mavi tonlarındaki tema. Yeni bir projede uygulamayı ilk başlattığımızda aslında MainTheme’deki renkleri görürüz.

Ancak, bu yerleşik temayı kullanmak zorunda değilsiniz. MainTheme’yi değiştirebilir veya yeni bir tema tasarlayabilirsiniz.

Xamarin Forms Main Theme
Xamarin Forms Main Theme

Malzeme Temasıyla özelleştirebileceğiniz alanlar şunlardır:

Xamarin.Forms Malzeme Tasarım Teması
Xamarin.Forms Malzeme Tasarım Teması

Aşağıda bir StackLayout içerisinde Picker, Slider ve Switch elemanları var. Xamarin.Forms’un MainTheme’sinde bu elemanlar şekildeki gibi görünüyor. Şimdi Malzeme Temasıyla biraz oynayarak bu elemanların ve özelleştirilebilir alanların görünümünü değiştirelim.

<StackLayout>
    <Picker Title="Picker" Margin="0,50,0,50" />
    <Slider Minimum="0" Maximum="50" Margin="0,0,0,50" />
    <Switch IsToggled="True" Margin="0,0,0,50" />
</StackLayout>
Xamarin Forms Picker Slider Switch
Xamarin Forms Picker Slider Switch
  • statusBarColor – Durum çubuğunun rengi.

StatusBarColor’u değiştirmek için aşağıdaki kodu styles.xml’deki <style> etiketine ekleyin :

<item name="android:statusBarColor">#e6b31e</item>
Xamarin.Forms statusBarColor
statusBarColor
  • navigationBarColor – Gezinme çubuğunun rengi.

NavigationBarColor’u değiştirmek için aşağıdaki kodu styles.xml’deki <style> etiketine ekleyin :

<item name="android:navigationBarColor">#e6b31e</item>
Xamarin.Forms navigationBarColor
navigationBarColor
  • textColorPrimary – Uygulama çubuğundaki UI metninin rengi.

TextColorPrimary’yi değiştirmek için aşağıdaki kodu styles.xml’deki <style> etiketine ekleyin:

<item name="android:textColorPrimary">#01d28e</item>
Xamarin.Forms textColorPrimary
textColorPrimary
  • colorPrimary – Uygulama çubuğunun rengi.

ColorPrimary’yi değiştirmek için, seçtiğiniz renk koduna önceden eklenmiş olan colorPrimary’nin renk kodunu ekleyin.

<item name="colorPrimary">#f7b71d</item>
Xamarin.Forms colorPrimary
colorPrimary
  • colorAccent – Onay kutuları, radyo düğmeleri ve düzenleme metin kutuları gibi kullanıcı arabirimi denetimlerinin rengi.

ColorAccent’i değiştirmek için, seçtiğiniz renk koduna zaten eklenmiş olan colorAccent’in renk kodunu ekleyin.

<item name="colorAccent">#ab72c0</item>
Xamarin.Forms colorAccent
colorAccent
  • colorPrimaryDark – Durum çubuğunun ve uygulama çubuklarının rengi; bu normalde colorPrimary’in koyu renkli bir sürümüdür.
  • windowBackground – Ekran arka planının rengi.
  • colorPrimary – Uygulama çubuğunun rengi.

Özel Malzeme Teması Örneği

Yukarıda Xamarin.Forms’un varsayılan teması olan MainTheme’yi özelleştirdik. Şimdi de kendi özel temamızı oluşturalım ve uygulamayı bu tema ile çalıştıralım.

Diyelim ki geliştirmekte olduğum mobil uygulamada #eff1f7 #4a42bf #18143d kodlu renkleri kullanarak özel bir tema oluşturmak istiyorum. Bunu yapmak için aşağıdaki yolları izlemeliyim.

1 Öncelikle projede Android>Resources>colors.xml‘e gidin. colors.xml dosyasında özel temanız için kullanacağınız renkleri tanımlayın. Burada tanımladığınız renkleri daha sonra styles.xml dosyasında tema oluştururken kullanacaksınız.

<resources>
    <color name="grey">#eff1f7</color>
    <color name="purple">#4a42bf</color>
    <color name="black">#18143d</color>
</resources>

2 Daha sonra Android>Resources>styles.xml‘e gidin. styles.xml dosyasında Xamarin.Forms’un varsayılan teması ve varsa daha önceden oluşturduğunuz özel temalar yer alır.

Özel tema oluşturmak için <style> tagı ile bir tema oluşturun. Bu tema Xamarin’deki özel temaların birinden miras alacak. Sonrasında color.xml’de tanımladığınız renkleri statusBarColor, navigationBarColor gibi alanların rengini ayarlamak için <item> etiketini kullanın.

<style name="CustomTheme" parent="MainTheme.Base">
    <item name="android:statusBarColor">@color/purple</item>
    <item name="android:windowBackground">@color/grey</item>
    <item name="android:navigationBarColor">@color/purple</item>
</style>

3 Son olarak MainActivity içerisinde sınıf tanımından önce [Activity] özniteliğindeki Theme özelliğini oluşturduğunuz özel tema ile değiştirin.

[Activity(Label = "XamarinSpotify", Icon = "@mipmap/icon", Theme = "@style/CustomTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )]

Adımları tamamladıktan sonra uygulamayı çalıştırıp nasıl göründüğüne bakın.

Xamarin.Forms’un varsayılan MainTheme’si ile özel tema arasındaki görünüm farkı.

Xamarin Forms Main Theme
Xamarin Forms Main Theme
Xamarin.Forms Özel Malzeme Teması
Xamarin.Forms Özel Malzeme Teması

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu