2011-06-07 4 views
9

J'ai un listView. custom_listitem1.xml est utilisé pour l'affichage des éléments dans la liste. Maintenant, je veux définir la ressource de couleur basée Selector (list_selector_color.xml) pour l'arrière-plan de l'élément.Android Textview ressource couleur de fond

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> 

mais il donne des erreurs suivantes .....

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 

quel est le problème dans ma morue e?

+0

où vous avez mis votre fichier list_selector_color.xml dans votre projet. – Sujit

+0

Je recoomend mettre "list_selector_color.xml" dans le dossier res/drawable. Si ce n'est pas le cas, créez d'abord le dossier "drawable" sous le répertoire res. –

Répondre

0

Où stockez-vous list_selector_color.xml? si elle est en res/couleur essayer de le transférer à res/étirables et appeler comme android:background="@drawable/list_selector_color"

+0

Cela ne fonctionne pas - le fichier list_selector_color.xml provoque une erreur d'exécution car chaque doit avoir un jeu d'attributs android: drawable s'il est extrait des dossiers pouvant être dessinés. Ayant Android: jeu de couleurs ne suffit pas. : \ – SilithCrowe

0

vous devez créer color.xml dans ... \res\values\color.xml répertoire du projet.
échantillon color.xml fichier

<?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> 

alors comment utiliser la couleur? S'il vous plaît voir cet exemple et la ligne ajoutée par +++++++ exemple de fichier main.xml

<?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

Je veux montrer la couleur différente à l'état différent (par exemple pressé, foyer) pour TextView. Comment c'est possible à votre façon? –

0

oui, il est possible Si vous définissez chaque textview dans chaque LinearLayout alors cela fonctionne.

+0

pouvez-vous un échantillon de code comment nous pouvons définir différentes couleurs à l'état différent (par exemple pressé, focus) pour 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

J'ai besoin de couleurs différentes à différents états (par exemple pressé, focus) de la même vue.Laisser la couleur par défaut est noire, sur pression, elle sera jaune, si elle est focalisée, elle sera rouge. Comment c'est possible dans votre code? –

-1

Maintenant, je comprends que ce que vous voyez le mean.ok "topField_design.xml" exemple suivant

<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> 

maintenant est un fichier xml des ressources drowable qui contiennent des ressources d'image 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

Vous ne pouvez pas utiliser le sélecteur de couleur comme arrière-plan. Vous pouvez utiliser le sélecteur drawable place:

<?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> 

Vous devrez mettre dans drawable/ dossier au lieu de color/ et d'accès

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

Mec! Je n'ai jamais pensé à créer la forme dans la balise ! Tu es un génie. J'ai toujours détesté le fait que je ne peux pas utiliser l'android: couleur directement à l'intérieur de tag lui-même, donc je créerais toujours des fichiers séparés pour chaque ! – LeoFarage

Questions connexes