2015-09-09 4 views
10

Ich erstelle eine ListView, die einige einfache Elemente in einer ViewCell hat.Wie kann ich die Farbe eines ausgewählten Elements in einem ListView ändern?

Wenn ich eines der Elemente auswähle, wird es orange. Wenn ich auf und halten Sie (die Kontext Aktionen zu öffnen) wird es weiß ...

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> 

Wie kann ich anpassen diese Farben?

+0

Ich verbrachte viele Stunden für die Anpassung des ausgewählten Elements Farbe eine Lösung finden zu finden - ohne Erfolg. Es gibt einige Problemumgehungen in SO und den Xamarin-Foren, aber keine davon hat mich glücklich gemacht oder sie haben einfach nicht funktioniert. Nach langer Zeit habe ich mich entschieden, den ausgewählten Objektstatus zu löschen, sobald das entsprechende Ereignis ausgelöst wird, und stattdessen die Textfarbe des Objekts zu ändern, um das ausgewählte Objekt zu markieren. – Wosi

+0

@Wosi hey, überprüfen Sie meine Antwort, könnte für Sie nützlich sein :) – BrunoLM

+0

Mögliche Duplikate von [Xamarin.Forms ListView: Legen Sie die Hervorhebungsfarbe eines angetippten Elements] (http://stackoverflow.com/questions/25885238/xamarin -forms-listview-set-the-highlight-color-of-a-taped-item) –

Antwort

16

Ich fand heraus, dass ich es direkt auf Android anpassen muss.

Um das Thema zu verwenden Ich änderte Droid/Properties/AssemblyInfo.cs fügte hinzu:

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

Und ich schuf einige Dateien auf:

Droid \ Resources \ Werte

colors.xml enthält die Farbdefinitionen für Mein Thema:

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

styles.xml enthält die Themeneinstellungen:

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

diese Namen ich mit dem Listview-Stil ändern.

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

Referenzen können auf developer.android.com R.attr

colors

+5

Wie wurde es in iOS und Windows gemacht? – Arti

+0

Downvoted, weil es eine Android-only-Lösung ist, beantwortet es die Frage nicht. – 476rick