style ها و theme ها - در برنامه نویسی اندروید

یک منبع style، قالب را تعریف می کند و به دنبال یک UI می گردد. یک style را می توان برای یک View فردی (از داخل یک فایل طرح بندی) یا برای کل یک اکتیویتی یا برنامه (از داخل فایل مانیفست) توسط یک theme اعمال کرد.

تعریف style ها

یک style در یک منبع XML تعریف می شود که جدا از XML است که طرح بندی را مشخص می کند. این فایل XML در دایرکتوری res/values/ پروژه شما قرار دارد و <resources> را به عنوان گره ریشه خواهد داشت که برای فایل style اجباری است. نام فایل XML دلخواه است، اما باید از پسوند xml. استفاده کند.

با استفاده از تگ <style> می توانید چندین style در هر فایل تعریف کنید، اما هر style نام خود را دارد که به طور منحصر به فرد style را مشخص می کند. ویژگی های style اندروید با استفاده از تگ <item> مطابق شکل زیر تنظیم می شوند:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="CustomFontStyle">
      <item name="android:layout_width">fill_parent</item>
      <item name="android:layout_height">wrap_content</item>
      <item name="android:capitalize">characters</item>
      <item name="android:fontfamily">@font/monospace</item>
      <item name="android:textSize">12pt</item>
      <item name="android:textColor">#00FF00</item>/> 
   </style>
</resources>

مقدار <item> می تواند یک رشته کلمه کلیدی، یک رنگ هگزا، یک مرجع به نوع منبع دیگر یا مقدار دیگری باشد که بسته به ویژگی style است, باشد.

استفاده از style

هنگامی که استایل شما تعریف شد، می توانید با استفاده از ویژگی style به صورت زیر از آن در فایل گرافیکی XML خود استفاده کنید:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

   <TextView
      android:id="@+id/text_id"
      style="@style/CustomFontStyle"
      android:text="@string/hello_world" />

</LinearLayout>

Inheritance یا وراثت در style

اندروید از Style Heritance به روشی بسیار شبیه به شیوه نامه آبشاری در طراحی وب پشتیبانی می کند. شما می توانید از این برای به ارث بردن خواص از یک سبک موجود استفاده کنید و سپس فقط ویژگی هایی را که می خواهید تغییر دهید یا اضافه کنید تعریف کنید.

برای پیاده سازی یک تم سفارشی یک فایل در مسیر MyAndroidApp/res/values/themes.xml ایجاد یا ویرایش کنید و موارد زیر را به آن اضافه کنید:

<resources>
   ...
   <style name="MyCustomTheme" parent="android:style/Theme">
   <item name="android:textColorPrimary">#ffff0000</item>
   </style>
   ...
</resources>

در AndroidManifest.xml خود، موضوع را به Activityهایی که می‌خواهید استایل بدهید اعمال کنید:

<activity
   android:name="com.myapp.MyActivity"
   ...
   android:theme="@style/MyCustomTheme"
   />

theme زمینه جدید شما در اکتیویتی شما اعمال خواهد شد و متن اکنون قرمز روشن است. مطابق تصویر پایین :

Android Style

استفاده از رنگ ها در ویژگی های theme

سپس منبع رنگ شما را می‌توان با افزودن عناصر <item> به تم سفارشی‌تان، روی برخی از ویژگی‌های تم، مانند پس‌زمینه پنجره و رنگ متن اصلی اعمال کرد. این ویژگی ها در فایل styles.xml شما تعریف شده اند. به عنوان مثال، برای اعمال رنگ سفارشی به پس‌زمینه پنجره، دو عنصر <item> زیر را به تم سفارشی خود اضافه کنید که در فایل MyAndroidApp/res/values/styles.xml تعریف شده‌اند.

<resources>
   ...
   <style name="MyCustomTheme" ...>
      <item name="android:windowBackground">@color/my_custom_color</item>
      <item name="android:colorBackgroundCacheHint">@color/my_custom_color</item>
   </style>
   ...
</resources>

Android Style

استفاده از Nine-Patch سفارشی با دکمه ها

قابل ترسیم Nine-Patch نوع خاصی از تصویر است که می تواند از نظر عرض و ارتفاع در حالی که یکپارچگی بصری خود را حفظ می کند، مقیاس بندی شود. نه وصله متداول ترین راه برای تعیین ظاهر دکمه های اندروید است، اگرچه می توان از هر نوع قابل ترسیمی استفاده کرد.

Android Style3

مراحل ایجاد دکمه های Nine-Patch
  • این بیت مپ را در مسیر /res/drawable/my_nine_patch.9.png ذخیره کنید.
  • یک style جدید تعریف کنید.
  • style دکمه جدید را به ویژگی buttonStyle تم سفارشی خود اعمال کنید.
یک style جدید تعریف کنید:
<resources>
   ...
      <style name="MyCustomButton" parent="android:Widget.Button">
      <item name="android:background">@drawable/my_nine_patch</item>
      </style>
   ...
</resources>
اعمال theme
<resources>
   ...
      <style name="MyCustomTheme" parent=...>
         ...
         <item name="android:buttonStyle">@style/MyCustomButton</item>
      </style>
   ...
</resources>

theme های اندروید

امیدوارم که مفهوم Style را درک کرده باشید، بنابراین اکنون بیایید سعی کنیم بفهمیم theme چیست. یک theme چیزی نیست جز یک style اندرویدی که برای کل یک اکتیویتی یا برنامه اعمال می‌شود، نه یک View فردی.

بنابراین، هنگامی که یک Style به عنوان یک موضوع اعمال می شود، هر View در Activity یا برنامه هر ویژگی سبکی را که پشتیبانی می کند اعمال می کند. به عنوان مثال، می‌توانید همان استایل CustomFontStyle را به عنوان تم برای یک Activity اعمال کنید و سپس تمام متن‌های داخل آن Activity دارای فونت monospace سبز رنگ خواهد بود.

برای تنظیم theme برای تمام اکتیویتی های برنامه خود، فایل AndroidManifest.xml را باز کنید و تگ <application> را ویرایش کنید تا ویژگی android:theme را با نام سبک اضافه کنید. مثلا:

<application android:theme="@style/CustomFontStyle">

اما اگر می‌خواهید یک theme فقط برای یک Activity در برنامه‌تان اعمال شود، ویژگی android:theme را فقط به تگ <activity> اضافه کنید. مثلا:

<activity android:theme="@style/CustomFontStyle">

تعدادی theme پیش‌فرض توسط اندروید تعریف شده است که می‌توانید مستقیماً از آنها استفاده کنید یا با استفاده از ویژگی والد به صورت زیر آنها را به ارث ببرید.

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

حالت دادن به پالت رنگ

طرح چیدمان می تواند بر اساس رنگ های مبتنی بر آنها قابل اجرا باشد، به عنوان مثال طرح زیر بر اساس رنگ آنها طراحی شده است (آبی) :

Android Style4

طرح بندی فوق بر اساس فایل style.xml طراحی شده است که در res/values/ قرار داده شده است.

<resource>
   <style name="AppTheme" parent="android:Theme.Material">	
      <item name ="android:color/primary">@color/primary</item>
      <item name ="android:color/primaryDark">@color/primary_dark</item>
      <item name ="android:colorAccent/primary">@color/accent</item>
   </style>
<resource>

style ها و theme های پیش‌فرض

پلتفرم اندروید مجموعه بزرگی از سبک ها و تم ها را ارائه می دهد که می توانید در برنامه های خود از آنها استفاده کنید. می توانید مرجعی از تمام سبک های موجود در کلاس R.style پیدا کنید. برای مثال، می‌توانید تم Theme_NoTitleBar را با «@android:style/Theme.NoTitleBar» اعمال کنید.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

مقالات پیشنهادی

هک و امنیت

در تعریف کلی این واژه می توان گفت که به پیدا کردن راه های نفوذ به یک حریم شخصی و استفاده غیر مجاز از آن را هک می نامیم. هدف از هک می تواند ...


۶۹۳
۰
۱۳ آذر ۱۳۹۹

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۶۶۰
۰
۱۲ آذر ۱۳۹۹

بک لینک چیست؟

بک لینک (Back Link) به لینک دادن یک سایت به سایت دیگر گفته میشود که یک فاکتور مهم و اساسی در سئو هر سایتی می باشد.


۷۷۴
۰
۲۲ آذر ۱۳۹۹

وردپرس

وردپرس یک سیستم مدیریت محتوای قوی می باشد که با استفاده از آن می توان وب سایت ها و وبلاگ های گوناگونی با هر شرایطی را طراحی کرد چرا که این سیستم و ...


۵۶۶
۰
۱۳ آذر ۱۳۹۹