definicion body android layout imagebutton statelistdrawable

android - body html definicion



Error: la etiqueta<item> requiere un atributo ''dibujable'' o una etiqueta secundaria que define un dibujable (9)

item_bg_selector.xml archivo de selector de lista de estado item_bg_selector.xml en la carpeta item_bg_selector.xml de esta manera:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/item_background_selected" /> <item android:state_focused="true" android:drawable="@drawable/item_background_selected" /> <item android:state_pressed="true" android:drawable="@drawable/item_background_selected" /> <item android:drawable="@android:color/transparent"/> </selector>

Luego defino un elemento de estilo

<style name="Item"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:background">@drawable/item_bg_selector</item> </style>

Luego trato de crear un ImageButton como este:

<ImageButton style="@style/Item" android:id="@id/btn_home" android:src="@drawable/home_button" />

Eclipse me sigue dando el siguiente error en la ventana Event Details del Event Details :

Failed to parse file /path/to/projectdir/res/drawable/item_bg_selector.xml

El rastro de excepción se da a continuación:

org.xmlpull.v1.XmlPullParserException: Binary XML file line #16: <item> tag requires a ''drawable'' attribute or child tag defining a drawable at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:167) at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728) at com.android.layoutlib.bridge.impl.ResourceHelper.getDrawable(ResourceHelper.java:208) at com.android.layoutlib.bridge.android.BridgeTypedArray.getDrawable(BridgeTypedArray.java:731) at android.view.View.<init>(View.java:1885) at android.widget.ImageView.<init>(ImageView.java:112) at android.widget.ImageButton.<init>(ImageButton.java:85) at android.widget.ImageButton.<init>(ImageButton.java:81) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at android.view.LayoutInflater.createView(LayoutInflater.java:500) at com.android.layoutlib.bridge.android.BridgeInflater.onCreateView(BridgeInflater.java:84) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) at com.android.layoutlib.bridge.android.BridgeInflater.createViewFromTag(BridgeInflater.java:129) at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) at android.view.LayoutInflater.rInflate(LayoutInflater.java:621) at android.view.LayoutInflater.inflate(LayoutInflater.java:407) at android.view.LayoutInflater.inflate(LayoutInflater.java:296) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:279) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:318) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1317) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1071) at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:897) at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.pageChange(LayoutEditor.java:384) at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195) at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2743) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1429) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408)

Ahora, la pregunta es ¿dónde está el error? los dibujables existen en la carpeta. etiqueta tiene un atributo dibujable. He verificado esto casi 15 veces y todavía no he podido encontrar el problema. Creo que es un problema muy simple (si hay alguno). Cualquier trabajo para superar esto también es apreciado.

Además: Además, la línea 16 en item_bg_selector.xml corresponde a la tercera línea desde la parte superior del archivo que he publicado. es decir

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" line16 ----> android:drawable="@drawable/item_background_selected" />


El error tiene que ver con el formato de tu xml, estás configurando algo así como

android:background="@drawable/item_bg_selector"

Lo que el error te está diciendo es que debería ser así

android:drawable="@drawable/item_bg_selector"


Finalmente, llegué a saber que es un problema con solo ADT y realmente funciona bien en el dispositivo. Esto corresponde al problema 21046 .


He experimentado la misma excepción para un problema diferente.

Estaba intentando usar un selector de color para el android:background View android:background :

<RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/tab_background_selector" /> <!-- /res/color/tab_background_selector.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/white" android:state_checked="true" /> <item android:color="@color/light_blue" /> </selector>

Mover el selector a la carpeta dibujable y cambiar android:color a android:drawable resolvió el problema.

Además, la definición de fondo en el diseño debe cambiarse a android:background="@drawable/tab_background_selector"

Aquí está el selector final:

<!-- /res/drawable/tab_background_selector.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/white" android:state_checked="true" /> <item android:drawable="@color/light_blue" /> </selector>


Lo hice funcionar copiando la imagen directamente en el sistema de archivos (Finder en Mac) y no a través de Android Studio.


Reiniciar Eclipse y limpiar el proyecto funcionó para mí.


Se produce el mismo error en el archivo activity_main.xml si hay un LinearLayout adicional en la Activity . Eliminar esto resuelve el problema.

La limpieza y otras cosas no ayudan.


También encontré el mismo problema.

Acabo de reiniciar eclipse con -clean , y hice un project -> Clean en el proyecto en cuestión y los errores se han ido.


Tuve el mismo error y cambié el orden de los atributos (como se sugirió en la respuesta a esta otra pregunta ) para que el dibujable el primero resolviera el problema.

En su caso sería cambiar:

<item android:state_selected="true" android:drawable="@drawable/item_background_selected" />

a:

<item android:drawable="@drawable/item_background_selected" android:state_selected="true" />


Tuve el problema porque al cambiar el nombre del selector de dispositivos pre-lollipop, olvidé cambiar el nombre del rizado con el mismo nombre también en la carpeta drawable-v21.