54 votes

Android ListView La Couleur Du Texte

je suis en train de mettre la liste TextColor Noir. Depuis que je suis en utilisant un Fond Blanc.

Voici mon MailActivity

public class MailActivity extends ListActivity {

    String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mails);
        setListAdapter(new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, listItems));

    }
}

et mon XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="#FFFFFF">
    <ListView android:id="@android:id/list" android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <TextView android:id="@android:id/empty" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="Empty set" android:textColor="#000000" />
</LinearLayout>

je reçois l'arrière-plan blanc. mais je ne suis pas sûr de l'endroit où le mettre au premier plan à noir. essayé dans le fichier xml et ressemble à sa aide pas

153voto

Shardul Points 10371

Ok voici quelque chose que vous devriez savoir à propos de:

  1. La couleur d'arrière-plan vous mettez dans votre fichier xml est de l'activité et non de la ListItems vous essayez de définir.
  2. Chaque élément de la liste dispose de son propre fichier de mise en page et qui devrait être adoptée ou gonflé dans le cas où vous êtes à l'aide de complexes de mise en page pour un élément de liste.

J'ai essayer de vous l'expliquer avec un exemple de code :

*Permet de démarrer avec ListItems mise en page *: de l'enregistrer dans votre res/layout le dossier de votre projet android avec dire list_black_text.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Definig a container for you List Item-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Defining where should text be placed. You set you text color here-->
<TextView
android:id="@+id/list_content"
android:textColor="#000000"
android:gravity="center"
android:text="sample"
android:layout_margin="4dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

</LinearLayout>

Bien une mise en page simple avec un TextView , pour être précis. Vous devez disposer d'un identifiant attribué à TextView, afin de l'utiliser.

Maintenant à vous de l'écran/activité/chef de la mise en page, comme je l'ai dit vous êtes la définition d'arrière-plan de votre écran avec android:background d'attribut. Je vois que vous avez défini un texte, il existe aussi bien et je soupçonne que vous essayez de définir le contenu/élément de liste là.Ce qui n'est pas du tout nécessaire.

heres votre édité mise en page,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="#FFFFFF">
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
<!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE -->
</LinearLayout>

Et enfin le plus important est de configurer votre adaptateur.

setListAdapter(new ArrayAdapter<String>(
            this,R.layout.list_black_text,R.id.list_content, listItems));

Vous devez noter la mise en page des ressources qui sont de passage à l'adaptateur R.layout.list_black_text et R.id.list_content est TextView ID, nous avons déclaré. J'ai aussi changé ArrayAdapter de type Chaîne de caractères depuis son générique.

J'espère que cela explique tout. La marque de ma réponse accepté si vous êtes d'accord.

Manière désordonnée, Mais une Bonne correction rapide
Vous pouvez aussi le faire avec une solution rapide si vous ne voulez pas aller de l'avant avec le plan complexe de la définition etc.

Alors que l'instanciation de la carte de déclarer l'intérieur de la classe pour ce faire, voici l'exemple de code:

    ArrayAdapter<String> adapter=new ArrayAdapter<String>(
            this,android.R.layout.simple_list_item_1, listItems){

        @Override
        public View getView(int position, View convertView,
                ViewGroup parent) {
            View view =super.getView(position, convertView, parent);

            TextView textView=(TextView) view.findViewById(android.R.id.text1);

            /*YOUR CHOICE OF COLOR*/
            textView.setTextColor(Color.BLUE);

            return view;
        }
    };
        /*SET THE ADAPTER TO LISTVIEW*/
        setListAdapter(adapter);

23voto

silver_mx Points 376

1.-Créer des styles de fichier, par exemple: my_styles.xml et de l'enregistrer dans res/values.

2.-Ajoutez le code suivant:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="ListFont" parent="@android:style/Widget.ListView">
    <item name="android:textColor">#FF0000</item>
    <item name="android:typeface">sans</item>
</style>

</resources>

3.-Ajouter à votre style, à votre définition de l'Activité dans votre AndroidManifest.xml un android:thème de l'attribut, et de l'affecter comme valeur le nom du style que vous avez créé. Par exemple:

l'activité android:name="votre.activityClass" android:thème="@style/ListFont"> .........

REMARQUE: le Widget.ListView vient de: http://developer.android.com/reference/android/R.style.html. Vérifiez également: http://developer.android.com/guide/topics/ui/themes.html.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X