Question

j'utilise ExpandableListView Dans mon application et l'une des plaintes que j'obtiens des utilisateurs est que lorsque le List L'article est étendu, il est difficile de distinguer visuellement où la fin de l'élément de l'enfant se termine et le prochain élément de groupe commence.

Alors je voudrais changer l'arrière-plan de l'enfant List Article à la teinte différente.

Les tentatives brutales que j'ai faites jusqu'à présent étaient basées sur la couleur d'arrière-plan et le texte des éléments à l'intérieur de l'enfant View Article, mais cela entraîne une perte de plantes et de faits saillants. Ma question est donc - quelle est une bonne stratégie pour réaliser ce qui précède?

j'ai essayé styles et selectors Mais ce qui me dit vraiment, c'est si je change d'information pour l'article enfant, alors j'ai besoin d'ajouter selectors Pour toutes les combinaisons de focus / activées, etc. Quand je pense que j'essaie de le faire pour écraser une seule chose.

Existe-t-il un moyen d'hériter des parents style Et mettre background uniquement pour un élément d'enfant non focalisé avec d'autres styles retenu?

Était-ce utile?

La solution

Bien. Voici ce qui a fonctionné pour moi:

  1. Créez list_background.xml dans votre projet res/drawable annuaire
  2. Définissez la valeur d'arrière-plan de la disposition du niveau supérieur de votre élément d'enfant au dessin ci-dessus. Si vous vous grattez la tête à ce stade - je fais référence au fichier de mise en page XML qui est utilisé lorsque vous créez une vue d'enfant de votre liste extensible dans ExpandableListAdapter#getChildView

Voici un fichier tirable complet

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:state_enabled="true"
        android:drawable="@drawable/list_highlight_active" />
    <item android:state_enabled="true" android:state_selected="true" 
        android:state_window_focused="true"
    android:drawable="@drawable/list_highlight_inactive" />
    <item android:state_enabled="true" android:state_window_focused="true" 
        android:drawable="@color/item_body" />
    <item android:drawable="@color/item_body" />
</selector>

Je devais copier list_highlight_active.xml et list_highlight_inactive.xml de /android-sdk-windows-1.6_r1/platforms/android-1.5/data/res/drawable au répertoire dessinable de mon projet. @color/item_body est juste une nuance de gris

Autres conseils

Je viens de découvrir un moyen de «quelque peu» régler la couleur d'arrière-plan sans avoir à sauter à travers les cerceaux de sélecteur.

Comme vous l'avez noté, la définition de l'arrière-plan sur une couleur unie essuie les reflets du sélecteur car la nouvelle couleur d'arrière-plan l'obscurcit. Droidin a quelle est la solution normale: fournissez à votre propre sélecteur de fond les couleurs exactes que vous souhaitez. C'est une douleur pour le moins.

Mais si tout ce que vous voulez est une petite différenciation des couleurs, il existe un moyen plus simple: alpha mélange. Définissez votre couleur d'arrière-plan avec une valeur alpha. Par exemple, définissez l'arrière-plan sur "#bbffffff". Les deux premiers chiffres indiquent le niveau alpha. Tout se mélangera, donc l'arrière-plan ne sera pas un blanc pur et le point fort de la sélection ne sera pas l'orange vif normal, mais les enfants seront d'une couleur différente et le point culminant fonctionne toujours. Gagnant-gagnant.

Je recherche une solution similaire. Vous pouvez essayer d'obtenir une vue parent sur l'adaptateur Méthode GetChieldView. Je pense que ce parent est une vision parentale de tous vos chields. Et définir l'arrière-plan de la ressource à ce parent. Je le fais comme ça:

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,  View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.fa_report_sub_item, null);
        View parentGroup=(View) convertView.getParent();
        parentGroup.setBackgroundResource(R.drawable.fa_summ_report_main_item);
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top