2015-09-09 22 views
10

Tworzę ListView, który ma kilka prostych elementów wewnątrz ViewCell.Jak zmienić kolor wybranej pozycji w ListView?

Po wybraniu jednego z elementów staje się pomarańczowy. Kiedy klikam i przytrzymaj (otworzyć działania kontekstu) staje się biały ...

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> 

Jak mogę dostosować te kolory?

+0

Spędziłem wiele godzin, aby znaleźć rozwiązanie dla dostosowywania wybrany kolor elementu - bez powodzenia. Istnieje kilka obejść na SO i forach Xamarin, ale żaden z nich nie uszczęśliwił mnie lub po prostu nie zadziałał. Po dłuższej chwili zdecydowałem się usunąć stan wybranego przedmiotu zaraz po uruchomieniu odpowiedniego zdarzenia i zamiast tego zmienić kolor tekstu elementu, aby zaznaczyć zaznaczony. – Wosi

+0

@Wosi hej, sprawdź moją odpowiedź, może być przydatna dla ciebie :) – BrunoLM

+0

Możliwy duplikat [Xamarin.Forms ListView: Ustaw kolor podświetlenia wybranego elementu] (http://stackoverflow.com/questions/25885238/xamarin -forms-listview-set-highlight-color-of-a-taped-item) –

Odpowiedz

16

Dowiedziałem się, że muszę dostosować go bezpośrednio na Androida.

Aby użyć motywu Zmieniłem Droid/Properties/AssemblyInfo.cs dodając:

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

I stworzył kilka plików na:

Droid \ Resources \ ceni

colors.xml zawiera definicje kolorów dla mój motyw:

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

styles.xml zawiera ustawienia tematycznych:

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

Używanie tych nazw można zmienić styl listview.

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

Odniesienia można znaleźć na developer.android.com R.attr

colors

+5

Jak to zrobiono w iOS i Windows? – Arti

+0

Potrącona, ponieważ jest to rozwiązanie wyłącznie dla systemu Android, nie odpowiada na pytanie. – 476rick