2011-06-07 24 views
9

Tengo un listView. custom_listitem1.xml se usa para mostrar los elementos en la lista. Ahora quiero establecer el recurso de color basado en Selector (list_selector_color.xml) para el fondo del elemento.Android Textview recurso de color de fondo

custom_listitem1.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:textSize="18sp" 
    android:textStyle="bold" 
    android:background="@color/list_selector_color" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:paddingLeft="6dip" 
    android:minHeight="?android:attr/listPreferredItemHeight"/> 

list_selector_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#ffff0000"/> <!-- pressed --> 
    <item android:state_focused="true" 
      android:color="#ff0000ff"/> <!-- focused --> 
    <item android:color="#ff000000"/> <!-- default --> 
</selector> 

pero está dando siguientes errores .....

06-06 18:38:19.422: ERROR/AndroidRuntime(18603): Uncaught handler: thread main exiting due to uncaught exception 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603): android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.ResourceCursorAdapter.newView(ResourceCursorAdapter.java:79) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.SimpleCursorAdapter.newView(SimpleCursorAdapter.java:96) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.CursorAdapter.getView(CursorAdapter.java:182) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.AbsListView.obtainView(AbsListView.java:1274) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.ListView.makeAndAddView(ListView.java:1668) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.ListView.fillDown(ListView.java:637) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.ListView.fillFromTop(ListView.java:694) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.ListView.layoutChildren(ListView.java:1521) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.AbsListView.onLayout(AbsListView.java:1113) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1108) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.onLayout(LinearLayout.java:920) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.layout(View.java:6830) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.ViewRoot.performTraversals(ViewRoot.java:996) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1633) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.os.Looper.loop(Looper.java:123) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at java.lang.reflect.Method.invoke(Method.java:521) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at dalvik.system.NativeStart.main(Native Method) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603): Caused by: java.lang.reflect.InvocationTargetException 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.TextView.<init>(TextView.java:329) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at java.lang.reflect.Constructor.constructNative(Native Method) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  ... 52 more 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603): Caused by: android.content.res.Resources$NotFoundException: File res/color/list_selector_color.xml from drawable resource ID #0x7f070000 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.content.res.Resources.loadDrawable(Resources.java:1693) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.content.res.TypedArray.getDrawable(TypedArray.java:548) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.view.View.<init>(View.java:1850) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  at android.widget.TextView.<init>(TextView.java:335) 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603):  ... 56 more 
06-06 18:38:19.445: ERROR/AndroidRuntime(18603): Caused by: org.xmlpul 

lo que es el problema en mi bacalao ¿mi?

+0

donde usted ha puesto su archivo list_selector_color.xml en su proyecto. – Sujit

+0

Recomiendo poner "list_selector_color.xml" en la carpeta res/dibujable. Si no existe, cree primero la carpeta "dibujable" debajo del directorio res. –

Respuesta

0

¿Dónde almacena el list_selector_color.xml? si está en res/color de tratar de volver a ubicarla en res/dibujable y llame como android:background="@drawable/list_selector_color"

+0

Esto no funciona: el archivo list_selector_color.xml causa un error de tiempo de ejecución porque cada necesita tener un conjunto de atributos android: drawable si se extrae de las carpetas dibujables. Tener Android: el conjunto de colores no es suficiente. : \ – SilithCrowe

0

es necesario crear en color.xml ... \res\values\color.xml directorio del proyecto.
muestra color.xml archivo

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="background">#1474c0</color> 
<color name="row">#ff0000</color> 
<color name="translucent_red">#ff0000</color> 
</resources> 

continuación, cómo utilizar el color? Por favor ver este ejemplo y la línea añadida por +++++++ archivo main.xml muestra

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
+++++++android:background="@color/translucent_red"> 
<ListView android:id="@+id/android:list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
<TextView android:id="@+id/android:empty" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="No Notes!"/> 
</LinearLayout> 
+0

Quiero mostrar diferentes colores en diferentes estados (por ejemplo, presionar, enfocar) para TextView. ¿Cómo es posible en tu camino? –

0

sí es posible si define cada textview en cada LinearLayout, entonces funciona.

+0

¿Puede algún ejemplo de código cómo podemos establecer diferentes colores en diferentes estados (por ejemplo, presionar, enfocar) para LinearLayout? –

7
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:background="@color/background"//color 1 
> 
<TextView 
    android:id="@+id/tvheader" 
    android:layout_width="300dip" 
    android:layout_height="wrap_content" 
    android:background="#EC7703" 
    android:textColor="#000000" 
    android:text=" Edit Items" /> 
    /> 
<TextView 
    android:id="@+id/tvsl" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:background="@color/translucent_red"//color 2 
    /> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/background"> 
     <EditText 
     android:id="@+id/txtsl" 
     android:maxLines="1" 
     android:layout_marginTop="3dip" 
     android:layout_marginBottom="2dip" 
     android:layout_width="wrap_content" 
     android:ems="20" 
     android:layout_height="wrap_content"/> 
    </LinearLayout> 
    <TextView 
    android:id="@+id/tvname" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:background="@color/background" 
    /> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/row"> 
    <Spinner 
      android:id="@+id/txtname" 
      android:layout_width="200dip" 
      android:layout_height="wrap_content" 
      android:drawSelectorOnTop="true" 
      android:prompt="@string/medicine_info" 
      android:layout_toRightOf="@id/slcolon" 
      /> 
    </LinearLayout> 
    <TextView 
    android:id="@+id/tvqty" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:background="@color/background" 
    /> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/background"> 
    <EditText 
    android:id="@+id/txtqty" 
    android:maxLines="1" 
    android:layout_marginTop="3dip" 
    android:gravity="right" 
    android:layout_marginBottom="2dip" 
    android:layout_width="wrap_content" 
    android:ems="20" 
    android:layout_height="wrap_content"/> 
    </LinearLayout> 
    <TextView 
    android:id="@+id/tvuom" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:background="@color/background" 
    /> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/background"> 
    <EditText 
    android:id="@+id/txtuom" 
    android:maxLines="1" 
    android:layout_marginTop="3dip" 
    android:layout_marginBottom="2dip" 
    android:layout_width="wrap_content" 
    android:ems="20" 
    android:layout_height="wrap_content"/> 
    </LinearLayout> 
    <TableLayout 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:background="@color/background" 
     android:layout_gravity="center" 
     android:stretchColumns="*" > 
    <TableRow> 
    <Button 
     android:id="@+id/Btnok" 
     android:text="Edit" /> 
    <Button 
     android:id="@+id/Btndelete" 
     android:text="Delete" /> 
    <Button 
     android:id="@+id/Btncancel" 
     android:text="Cancel" /> 
    </TableRow> 
    </TableLayout> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="40dip" 
     android:background="#F7BE57">//collor change by using color code 
     <TextView 
      android:id="@+id/maincolon" 
      android:layout_width="wrap_content" 
      android:layout_height="40dip" 
      android:text="     " /> 
     <TextView 
      android:id="@+id/tvprovider" 
      android:layout_width="wrap_content" 
      android:layout_height="40dip" 
      android:textColor="#000000" 
      android:text="Provider : Softworks" 
     /> 
    </LinearLayout> 
</LinearLayout> 
+0

Necesito diferentes colores en diferentes estados (por ejemplo, presionado, enfoque) de la misma vista.Permita que el color predeterminado sea negro, al presionarlo será amarillo, si está enfocado, será rojo. ¿Cómo es posible en tu código? –

-1

Ahora entiendo que lo que ves mean.ok el ejemplo siguiente

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<LinearLayout android:id="@+id/topField" android:layout_weight="2.5" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:background="@drawable/topField_design" 
    android:orientation="horizontal" > 
    <EditText android:id="@+id/digitsText" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" android:maxLines="1" android:scrollHorizontally="true" 
     android:textSize="28sp" android:freezesText="true" android:background="#F7BE57" 
     android:layout_margin="0dip" 
     android:contentDescription="description" 
     android:focusableInTouchMode="true" android:editable="true" android:cursorVisible="false" /> 
</LinearLayout> 

ahora "topField_design.xml" es un archivo XML que contienen recursos drowable recurso de imagen drowable.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
    android:drawable="@drawable/btn_dial_textfield_pressed" /> 
<item android:state_focused="true" 
    android:drawable="@drawable/btn_dial_textfield_selected" /> 
<item 
    android:drawable="@drawable/btn_dial_textfield_normal" />//btn_dial_textfield_normal is a .png image resource into drowable folder "btn_dial_textfield_normal.png" 
</selector> 
9

No se puede usar el selector de color como fondo. Usted puede utilizar el selector dibujable lugar:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape> 
      <solid android:color="#ffff0000"/> 
     </shape> 
    </item><!-- pressed --> 

    <item android:state_focused="true"> 
     <shape> 
      <solid android:color="#ff0000ff"/> 
     </shape> 
    </item><!-- focused --> 

    <item> 
     <shape> 
      <solid android:color="#ff000000"/> 
     </shape> 
    </item><!-- default --> 

</selector> 

Usted tendrá que ponerlo en drawable/ carpeta en lugar de color/ y acceso como

android:background="@drawable/list_selector_color" 
+0

¡Tío! ¡Nunca pensé en crear la forma dentro de la etiqueta ! Eres un genio. Siempre he odiado el hecho de que no puedo usar el android: color directamente dentro de la etiqueta , así siempre crearía archivos separados para cada ! – LeoFarage

Cuestiones relacionadas