2011-12-06 6 views
23

Estoy desarrollando una pequeña aplicación para Android, y estoy teniendo un problema con un diseño, he estado tratando de encontrar el error en mi xml, pero no pude encontrarlo ...Definición del diseño. "Debe proporcionar un atributo layout_width".

El error I estoy recibiendo es 'debe proporcionar un atributo layout_width', pero lo hice y todavía no funciona ...

Aquí está mi archivo XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="100" > 

    <TextView android:id="@+id/nombreEvento" 
     android:layout_height="fill_parent" 
     android:layout_weight="70" 
    /> 

    <TextView android:id="@+id/moneda" 
     android:layout_height="fill_parent" 
     android:layout_weight="10" 
    /> 

    <TextView android:id="@+id/totalEvento" 
     android:layout_height="wrap_content" 
     android:layout_weight="20" 
    /> 
    </LinearLayout> 

<TextView android:id="@+id/fecha" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
/> 

</LinearLayout> 

Respuesta

18

Nop todas sus TextViews han layout_height y layout_weight en lugar de layout_height y layout_width (y posiblemente layout_weight). Pruebe esto:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="100" > 

    <TextView android:id="@+id/nombreEvento" 
     android:layout_height="fill_parent" 
     android:layout_width="0dp" 
     android:layout_weight="70" 
    /> 

    <TextView android:id="@+id/moneda" 
     android:layout_height="fill_parent" 
     android:layout_width="0dp" 
     android:layout_weight="10" 
    /> 

    <TextView android:id="@+id/totalEvento" 
     android:layout_height="wrap_content" 
     android:layout_width="0dp" 
     android:layout_weight="20" 
    /> 
    </LinearLayout> 

<TextView android:id="@+id/fecha" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
/> 

</LinearLayout> 
+2

¿Cuál es la diferencia? –

+1

@ AlikElzin-kilaka Las vistas de texto anidado tienen layout_WEIGHT ... también deberían tener layout_WIDTH. – ComeIn

2

es necesario specifiy el ancho y altura de la vista. Eso es imprescindible Para la vista de texto, solo está configurando la altura y el peso. Añadir

android:layout_width="0dip" 
3

Pruebe agregar android:layout_width="wrap_content" a sus TextViews que no lo tienen.

+0

Solía ​​usar esto todo el tiempo también, pero generalmente cuando uso peso en varios elementos quiero hacer 0dp porque la mayoría de las veces quiere que el ancho sea de cierta proporción en lugar de tener las vistas para envolver_contenido en ancho y luego llena el espacio restante usando los pesos. – kabuko

+0

Como alternativa a 0dip, a menudo uso fill_parent/match_parent al aplicar pesos, parece hacer lo mismo. Pero eso depende de la discreción de OP. – MrZander

+0

Lo he intentado también, pero he tenido problemas con eso. Por lo general, funciona, pero de vez en cuando (pero no constantemente) suceden cosas extrañas en las que puede llegar a ser más grande de lo que cabría esperar. He tenido problemas con que las cosas salgan de la pantalla. – kabuko

3

En mi caso, olvidé poner el atributo layout_width a TableLayout.

Es un poco confuso por culpa del TableRow que es un hijo de TableLayout no requiere una layout_width por lo que corrí en esta edición ...

+0

Tuve un problema similar. Si está inflando su diseño desde un XML y tiene como raíz de ese XML un TableRow, debe especificar el ancho del TableRow. – Tiago

1

creo que u no han puesto dp después del tamaño de la anchura .what por qué su código podría no estar funcionando. ex android:layout_weight="20" utilizar este android:layout_weight="20dp"

Cuestiones relacionadas