2015-09-09 11 views
10

Sto creando un ListView che contiene alcuni elementi semplici all'interno di ViewCell.Come cambio il colore di un oggetto selezionato su un controllo ListView?

Quando seleziono uno degli elementi diventa arancione. Quando ho cliccare e tenere premuto (per aprire le azioni di contesto) diventa bianco ...

background color

<ListView ItemsSource="{Binding Items}" HasUnevenRows="True"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
       <ViewCell.ContextActions> 
        <MenuItem Text="Delete" /> 
       </ViewCell.ContextActions> 
       <StackLayout Orientation="Horizontal" Padding="20"> 
        <StackLayout HorizontalOptions="StartAndExpand"> 
         <Label Text="{Binding Name}" FontSize="Large" FontAttributes="Bold" /> 
         <Label Text="{Binding Description}" /> 
        </StackLayout> 
       </StackLayout> 
      </ViewCell> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Come posso personalizzare questi colori?

+0

ho speso un sacco di ore per trovare una soluzione per la personalizzazione del colore elemento selezionato - senza successo. Ci sono alcuni workaround su SO e sui forum Xamarin ma nessuno di loro mi ha reso felice o semplicemente non ha funzionato. Dopo molto tempo ho deciso di eliminare lo stato dell'articolo selezionato non appena è stato attivato l'evento corrispondente e modificare il colore del testo dell'articolo per contrassegnare quello selezionato. – Wosi

+0

@Wosi hey, controlla la mia risposta, potrebbe essere utile per te :) – BrunoLM

+0

Possibile duplicato di [Xamarin.Forms ListView: imposta il colore di evidenziazione di un oggetto toccato] (http://stackoverflow.com/questions/25885238/xamarin -forms-listview-set-the-highlight-color-of-a-tocced-item) –

risposta

16

Ho scoperto che devo personalizzarlo direttamente su Android.

Per utilizzare il tema ho cambiato Droid/Properties/AssemblyInfo.cs aggiungendo:

[assembly: Application(Theme = "@style/AppStyle.Light")] 

e ho creato alcuni file su:

Droid \ Resources \ Valori

colors.xml contiene le definizioni dei colori per il mio tema:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <color name="ListViewSelected">#96BCE3</color> 
    <color name="ListViewHighlighted">#E39696</color> 
</resources> 

styles.xml contiene le impostazioni del tema:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <style name="AppStyle.Light" parent="android:style/Theme.Material.Light.DarkActionBar"> 
    <item name="android:colorPressedHighlight">@color/ListViewSelected</item> 
    <item name="android:colorLongPressedHighlight">@color/ListViewHighlighted</item> 
    <item name="android:colorFocusedHighlight">@color/ListViewSelected</item> 
    <item name="android:colorActivatedHighlight">@color/ListViewSelected</item> 
    <item name="android:activatedBackgroundIndicator">@color/ListViewSelected</item> 
    </style> 
</resources> 

L'utilizzo di questi nomi posso cambiare lo stile ListView.

android:colorPressedHighlight 
android:colorLongPressedHighlight 
android:colorFocusedHighlight 
android:colorActivatedHighlight 
android:activatedBackgroundIndicator 

I riferimenti possono essere trovati sul developer.android.com R.attr

colors

+5

Come è stato fatto in iOS e Windows? – Arti

+0

Downvoted perché è una soluzione solo per Android, non risponde alla domanda. – 476rick

Problemi correlati