דף הבית
אודות טליה שוורץ
פורומים
מאמרים
צרי קשר
עוד...
כיצד אפשר לשנות צבעו של כפתור כאשר העכבר עומד עליו?
ב-XML של אנדרואיד יש אפשרות של יצירת תצוגות שונות למצבים שונים.
איך עושים זאת?
1. בתקיית ה-drawable יוצרים את קבצי התצוגה (ניתן ליצור כל דבר כולל גרדיאנט)
gradient.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:src="@drawable/YOURIMAGE"/> </item> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#880d0d0f" android:endColor="#885d5d5e"/> </shape> </item> </layer-list>
2. יוצרים את תצוגת הכפתור שתלויה בכל מצב (יש המון מצבים ואפשר להוסיף הכל)
button.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/YOURIMAGE" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" /> <item android:drawable="@drawable/YOURIMAGE" /> </selector>
3. מוסיפים לכפתור את הרקע
"android:background="@drawable/button"
שימי לב:
בהגדרה כזו של כל מצבי הכפתור תוכלי דרך הקוד (JAVA) לשנות את המראה של הכפתור לפי מה שתרצי, כמו לעשות אותו enabled או כל אופציה אחרת...
בהצלחה!
פוקוס טוב במצבים כמו טקסט, כשהמשתמש מתמקד בשדה הטקסט, אז נניח משים לו מסגרת סביב השדה או משהו כזה, לא על כפתור...
pressed - עובד
focused - לא עובד
בסה"כ השתמשתי עם הקוד הזה: <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/black"/> <!-- pressed --> <item android:state_focused="true" android:drawable="@color/white"/> <!-- focused --> <item android:drawable="@color/white"/> <!-- default --> </selector>
ב-XML של אנדרואיד יש אפשרות של יצירת תצוגות שונות למצבים שונים.
איך עושים זאת?
1. בתקיית ה-drawable יוצרים את קבצי התצוגה (ניתן ליצור כל דבר כולל גרדיאנט)
gradient.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:src="@drawable/YOURIMAGE"/> </item> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#880d0d0f" android:endColor="#885d5d5e"/> </shape> </item> </layer-list>
2. יוצרים את תצוגת הכפתור שתלויה בכל מצב (יש המון מצבים ואפשר להוסיף הכל)
button.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/YOURIMAGE" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" /> <item android:drawable="@drawable/YOURIMAGE" /> </selector>
3. מוסיפים לכפתור את הרקע
"android:background="@drawable/button"
שימי לב:
בהגדרה כזו של כל מצבי הכפתור תוכלי דרך הקוד (JAVA) לשנות את המראה של הכפתור לפי מה שתרצי, כמו לעשות אותו enabled או כל אופציה אחרת...
בהצלחה!
פוקוס טוב במצבים כמו טקסט, כשהמשתמש מתמקד בשדה הטקסט, אז נניח משים לו מסגרת סביב השדה או משהו כזה, לא על כפתור...
pressed - עובד
focused - לא עובד
בסה"כ השתמשתי עם הקוד הזה: <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/black"/> <!-- pressed --> <item android:state_focused="true" android:drawable="@color/white"/> <!-- focused --> <item android:drawable="@color/white"/> <!-- default --> </selector>