2015-09-09 8 views
10

Я создаю ListView, у которого есть некоторые простые элементы внутри ViewCell.Как изменить цвет выбранного элемента в ListView?

Когда я выбираю один из предметов, он становится оранжевым. Когда я нажать и удерживать (открыть контекстные действия) он становится белым ...

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> 

Как я могу настроить эти цвета?

+0

я провел много часов, чтобы найти решение для настройки выбранного цвета элемента - без успеха. Есть некоторые обходные пути на SO и форумах Xamarin, но ни один из них не сделал меня счастливым или они просто не работали. После долгого времени я решил удалить выбранное состояние элемента, как только соответствующее событие будет запущено, и вместо этого измените цвет текста элемента, чтобы отметить выбранный. – Wosi

+0

@Wosi эй, посмотри мой ответ, может быть вам полезен :) – BrunoLM

+0

Возможный дубликат [Xamarin.Forms ListView: установите цвет подсветки элемента с надписью] (http://stackoverflow.com/questions/25885238/xamarin -forms-listview-set-the-highlight-color-of-a-tapped-item) –

ответ

16

Я узнал, что должен настроить его непосредственно на Android.

Чтобы использовать эту тему я изменил Droid/Properties/AssemblyInfo.cs добавив:

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

И я создал некоторые файлы:

Droid \ Resources \ значение

colors.xml содержит определение цвета для моя тема:

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

styles.xml содержит настройки темы:

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

Используя эти имена я могу изменить стиль ListView.

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

Ссылки могут быть найдены на developer.android.com R.attr

colors

+5

Как это было сделано в iOS и Windows? – Arti

+0

Downvoted, потому что это Android-решение, оно не отвечает на вопрос. – 476rick

Смежные вопросы