frankish
frankish

Reputation: 6836

Why would a color state list file not be recognized by android?

I want to have a Text-Button which can be highlighted when pressed and it will have an empty background. (Basically like a link in a browser)

I used a button for this.

The following code works as i entered it for the "background" attribute. If i enter it for textColor attribute, i get "android.content.res.Resources$NotFoundException:" for the "textbutton" resource (which i have tried adding it to both color and drawble directories)

<Button android:text="My Text" android:background="@drawable/textbutton" android:textColor="#FFFFFFFF" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button>

The following code does not work:

<Button android:text="My Text" android:background="#0000" android:textColor="@drawable/textbutton" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button>

(making it a color/, instead of a drawable does not work too)

This is the contents of textbutton.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"><color android:color="#FFFFFFFF"></color></item>
    <item android:state_focused="true"><color android:color="#FFFFFFFF"></color></item>
    <item><color android:color="#FF33b5e5"></color></item>
</selector>

Upvotes: 1

Views: 1664

Answers (2)

Srikanth Pai
Srikanth Pai

Reputation: 926

<?xml version="1.0" encoding="utf-8"?>
<color name="md__transparent">#00000000</color>
<color name="md__defaultBackground">#FF555555</color>
<color name="gesture_color">#FFFFFF00</color>
<color name="background_color">#2F4F92</color>
<color name="background_grey_color">#D8D8D8</color>
<color name="header_background_color">#FFAE02</color>
<color name="list_selection_dark">#a3a6a8</color>
<color name="tabBackground">#2568ba</color>
<color name="tabMedium">#1c4c80</color>
<color name="tabDark">#1d66ab</color>
<color name="tabTransparent">#10ffffff</color>
<color name="tabHeader">#FF4000</color>
<color name="tabUnselected">#cfcfcf</color>
<color name="title_background">#D7D4D4</color>
<color name="title_text">#000000</color>
<color name="title_text_alt">#ffffffff</color>
<color name="foreground1">#ff355689</color>
<color name="foreground2">#ff7081a3</color>
<color name="background1">#ffffffff</color>
<color name="background2">#ffd5ddeb</color>
<color name="background3">#ffe3e8f1</color>
<color name="title_separator">#40ffffff</color>
<color name="contents_text">#ff000000</color>
<color name="encode_view">#ffffffff</color>
<color name="grey">#D7D4D4</color>
<color name="help_button_view">#ffcccccc</color>
<color name="help_view">#ff404040</color>
<color name="possible_result_points">#c0ffff00</color>
<color name="result_image_border">#ffffffff</color>
<color name="result_minor_text">#ffc0c0c0</color>
<color name="result_points">#c000ff00</color>
<color name="result_text">#ffffffff</color>
<color name="result_view">#b0000000</color>
<color name="sbc_header_text">#ff808080</color>
<color name="sbc_header_view">#ffffffff</color>
<color name="sbc_list_item">#fffff0e0</color>
<color name="sbc_layout_view">#ffffffff</color>
<color name="sbc_page_number_text">#ff000000</color>
<color name="sbc_snippet_text">#ff4b4b4b</color>
<color name="share_text">#ff000000</color>
<color name="status_view">#50000000</color>
<color name="status_text">#ffffffff</color>
<color name="transparent">#00000000</color>
<color name="viewfinder_frame">#ff000000</color>
<color name="viewfinder_laser">#ffff0000</color>
<color name="viewfinder_mask">#60000000</color>
<color name="accent_1">#ff29549f</color>

<drawable name="white">#FFFFFF</drawable>
<drawable name="android_orange">#FF9E18</drawable>
<drawable name="android_yellow">#F2E406</drawable>

<color name="blue">#770000ff</color>
<color name="green">#7700ff00</color>
<color name="yellow">#77ffff00</color>
<color name="red">#FF0000</color>
<color name="screen_background_black">#ff000000</color>
<color name="translucent_background">#e0000000</color>
<color name="transparent_background">#00000000</color>
<color name="solid_red">#FF0000</color>
<color name="solid_blue">#0000ff</color>
<color name="solid_green">#f0f0</color>
<color name="solid_yellow">#ffffff00</color>
<color name="White">#FFFFFF</color>
<color name="Black">#000000</color>
<color name="actionbar_background_light">#ccffffff</color>
<color name="actionbar_background_dark">#cc000000</color>
<color name="drag_active_color">#80cccccc</color>
<color name="actionbar_text">#ff29549f</color>
 

Save this xml as "color.xml" in the values folder of your project and later you can as below

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:state_pressed="true"
        android:color="@color/Black">
    </item>

    <item
        android:state_focused="true"
        android:color="@color/Blue">
    </item>

    <item android:color="@color/White">
    </item>
</selector>

This is more efficient way of using as it can be used for text color,background etc in any layouts..

Upvotes: 1

frankish
frankish

Reputation: 6836

The problem was NOT defining "color" property inside "item" tag.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#FFFFFFFF"></item>
    <item android:state_focused="true" android:color="#FFFFFFFF"></item>
    <item android:color="#FF33b5e5"></item>
</selector>

Upvotes: 2

Related Questions