Ginger McMurray
Ginger McMurray

Reputation: 1157

Strange Lint Warning - Unexpected text found in layout file: ""

I've got the following selector defined in button_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:state_pressed="true" 
           android:state_enabled="true"
           android:drawable="@drawable/button_settlement_background_pressed" />
       <item android:state_enabled="true"
           android:drawable="@drawable/button_settlement_background_normal" />
       <item android:state_enabled="false"
           android:drawable="@drawable/button_settlement_background_disabled" />
       </selector>

When I run lint I get the following warning: Unexpected text found in layout file: "". It says it's happening at line 4 in "drawable". All of the referenced drawables exist in /res/drawable.

Does anyone know what could be causing this? I can ignore the warning but I'd rather fix it if possible.

Also, I get warnings for unused strings and icons when they're only referenced in AndroidManifest.xml. Is there a way to fix those instead of ignoring them?

Upvotes: 14

Views: 20299

Answers (7)

Farquaad-_-
Farquaad-_-

Reputation: 1

Analyze -> Inspect code

It worked for me!

Upvotes: 0

Dhwaneel
Dhwaneel

Reputation: 551

In XML file, tags contain attributes. consider the line: (last ">" should not be there) ...

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

Make sure that the tag on first line does not contain">".

Replace above code with: <selector xmlns:android="http://schemas.android.com/apk/res/android" ... </selector>

Now other elements are under selector tag. I hope this helps.

Upvotes: -1

j2R
j2R

Reputation: 46

typically, this would happen when you inserting something like "android:id=" without a newline and using eclipse's auto completion, like this:

<LinearLayout
            android:id= >
                       ^

here type enter, the code would appears to be like this:

<LinearLayout
                android:id="@+id/

the character '>' has been erased and '"' become invisible.

use ctrl+shift+f to format the file to find the hidden characters.

Upvotes: 2

CornishDibley
CornishDibley

Reputation: 51

I found that if I closed the file I had the hidden character on, then reopened the same file. The character was no longer hidden (and typically was just after the />, for example />" ).

Upvotes: 1

ugochimbo
ugochimbo

Reputation: 261

You can also Format the xml file (CTRL + SHIFT + F). The extra characters would be displayed.

Upvotes: 13

vezucci
vezucci

Reputation: 386

Using Project>Clean.

Fixed that problem in my case.

Upvotes: 20

Ted Hopp
Ted Hopp

Reputation: 234857

Perhaps there's an invisible character somewhere in the white space. I'd try recreating the xml from scratch (not using copy-and-paste, which would just copy the problem, if that's what's happening). I'd also clean and rebuild the project.

As far as the unused resource warnings, I don't think there's a way to control this. The problem of false positives is hugely worse for library projects. Android lint is a fairly new tool and (in my opinion) still has a lot of rough edges.

Upvotes: 16

Related Questions