ColorStateList
شی ای است که می توانید آن را در XML تعریف کنید و به عنوان رنگی اعمال کنید که در واقع رنگ ها را بسته به وضعیت شی View
که روی آن اعمال می شود تغییر می دهد. برای مثال، یک ویجت Button
میتواند در یکی از چندین حالت وجود داشته باشد: فشرده، متمرکز، یا هیچکدام. با استفاده از فهرست حالت رنگ، می توانید برای هر حالت رنگ متفاوتی ارائه دهید.
شما لیست وضعیت را در یک فایل XML توصیف می کنید. هر رنگ در یک عنصر <item>
در داخل یک عنصر <selector>
تعریف میشود. هر <item>
از ویژگی های مختلفی برای توصیف وضعیتی که در آن استفاده می شود استفاده می کند.
در طول هر تغییر حالت، لیست حالت از بالا به پایین پیمایش می شود و اولین موردی که با وضعیت فعلی مطابقت دارد استفاده می شود. انتخاب بر اساس "بهترین" تطابق نیست ، بلکه اولین موردی است که حداقل معیارهای ایالت را برآورده می کند.
توجه: اگر می خواهید یک منبع رنگ ثابت ارائه کنید، از یک مقدار رنگ ساده استفاده کنید.
- محل فایل:
-
res/color/ filename .xml
نام فایل به عنوان شناسه منبع استفاده می شود. - نوع داده منبع کامپایل شده:
- اشاره گر منبع به
ColorStateList
- مرجع منبع:
- در جاوا:
R.color. filename
در XML: @[ package :]color/ filename
- نحو:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:lStar="floating_point_value"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
- عناصر:
-
<selector>
- مورد نیاز. این عنصر ریشه است. حاوی یک یا چند عنصر
<item>
است. ویژگی ها:
-
xmlns:android
- رشته . مورد نیاز. فضای نام XML را که
"http://schemas.android.com/apk/res/android"
است، تعریف می کند.
-
<item>
- رنگی را برای استفاده در حالتهای خاص، همانطور که با ویژگیهای آن توصیف میشود، تعریف میکند. این یک فرزند عنصر
<selector>
است. ویژگی ها:
-
android:color
- رنگ هگزادکسیمال . مورد نیاز . رنگ با مقدار RGB و کانال آلفا اختیاری مشخص می شود.
مقدار همیشه با یک کاراکتر پوند ( #
) شروع می شود و به دنبال آن اطلاعات آلفا-قرمز-سبز-آبی در یکی از قالب های زیر قرار می گیرد:
- # RGB
- # ARGB
- # RRGGBB
- # AARRGGBB
-
android:lStar
- نقطه شناور . اختیاری این ویژگی درخشندگی ادراکی رنگ پایه را تغییر می دهد. یا یک مقدار ممیز شناور بین 0 تا 100 یا یک ویژگی تم می گیرد که به این ترتیب حل می شود. رنگ کلی مورد با تبدیل رنگ پایه به فضای رنگی مناسب برای دسترسی و تنظیم L* آن بر روی مقدار مشخص شده در ویژگی
lStar
محاسبه می شود. مثال: android:lStar="50"
-
android:state_pressed
- بولی .
"true"
اگر از این مورد در هنگام ضربه زدن به شی استفاده شود، مانند زمانی که دکمه ای لمس یا کلیک می شود. اگر این مورد در حالت پیشفرض و بدون ضربه استفاده شود، "false"
است. -
android:state_focused
- بولی .
"true"
اگر این مورد در هنگام فوکوس کردن شی مورد استفاده قرار گیرد، مانند زمانی که یک دکمه با استفاده از گوی یا پد D برجسته می شود. اگر این مورد در حالت پیشفرض و بدون تمرکز استفاده شود، "false"
است. -
android:state_selected
- بولی . اگر این مورد در هنگام انتخاب شیء استفاده شود، مانند زمانی که یک برگه باز می شود،
"true"
. اگر از این مورد در زمانی که شی انتخاب نشده استفاده شود "false"
است. -
android:state_checkable
- بولی .
"true"
اگر این مورد در زمانی که شی قابل بررسی است استفاده شود. اگر این مورد زمانی که شی قابل بررسی نیست استفاده شود "false"
است. فقط در صورتی مفید است که شی بتواند بین ویجت قابل بررسی و غیرقابل بررسی انتقال یابد. -
android:state_checked
- بولی .
"true"
اگر این مورد در هنگام بررسی شی مورد استفاده قرار گیرد. اگر هنگام لغو انتخاب شی مورد استفاده قرار گیرد "false"
است. -
android:state_enabled
- بولی .
"true"
اگر این مورد در زمانی که شیء فعال است استفاده می شود، قادر به دریافت رویدادهای لمسی یا کلیکی است. اگر زمانی که شی غیرفعال است استفاده شود "false"
است. -
android:state_window_focused
- بولی . اگر این مورد زمانی که پنجره برنامه فوکوس دارد، استفاده شود، به این معنی که برنامه در پیش زمینه است،
"true"
. اگر از این مورد در زمانی که پنجره برنامه فوکوس ندارد استفاده شود، "false"
است، مثلاً اگر سایه اعلان پایین کشیده شود یا یک گفتگو ظاهر شود.
توجه: اولین مورد در لیست وضعیت که با وضعیت فعلی شیء مطابقت دارد اعمال می شود. بنابراین، اگر اولین مورد در لیست هیچ یک از ویژگی های حالت قبلی را نداشته باشد، هر بار اعمال می شود. به همین دلیل، همانطور که در مثال زیر نشان داده شده است، مقدار پیش فرض خود را در آخر قرار دهید.
- مثال:
- فایل XML ذخیره شده در
res/color/button_text.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000"/> <!-- default -->
</selector>
طرح XML زیر لیست رنگی را به View
اعمال می کند:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- همچنین ببینید: