2017-07-12 14 views
0

Xamarin.Formsアプリケーションでリストビューの選択したアイテムの色を変更する必要があります。Xamarin.Forms iOS listview選択したアイテムの色

public class DarkViewCell : ViewCell {} 

PCL XAML:

<ListView> 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <local:DarkViewCell> 
     <ViewCell.View> 
      ... Stuff ... 
     </ViewCell.View> 
     </local:DarkViewCell>    
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

のiOS

public class DarkViewCellRenderer : ViewCellRenderer 
{ 
    private UIView bgView; 

    public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) 
    { 
     var cell = base.GetCell(item, reusableCell, tv); 

     cell.BackgroundColor = UIColor.Black; 
     cell.TextLabel.TextColor = UIColor.White; 

     if (bgView == null) 
     { 
      bgView = new UIView(cell.SelectedBackgroundView.Bounds); 
      bgView.Layer.BackgroundColor = UIColor.FromRGB(48,48,48).CGColor; 
      bgView.Layer.BorderColor = UIColor.FromRGB(48, 48, 48).CGColor; 
      bgView.Layer.BorderWidth = 2.0f; 
     } 

     cell.SelectedBackgroundView = bgView; 

     return cell; 
    } 
} 

しかし、働いていない は、だから私は、カスタムレンダラ...

PCL C#を作成しました。また、私はそれが動作する新しいプロジェクトではSelectionStyle何も...

EDIT

を変更しようとしました。そして、コードは同じ

答えて

1

するのに便利です私は100%確実ではないんだけど、私は

<x:Arguments> 
    <ListViewCachingStrategy>RecycleElement</ListViewCachingStrategy> 
</x:Arguments> 

を取り出して、それが仕事を始めました。

0

てみ設定は次のとおりです。

public override UITableViewCell GetCell(Cell item, UITableView tv) 
{ 
    var cell = base.GetCell(item, tv); 
    cell.SelectedBackgroundView = new UIView() { BackgroundColor = UIColor.Black }; 
    return cell; 
} 

更新: 私はちょうどダミープロジェクトでコードを使用し、それが必要として動作します。カスタムレンダラーを登録するためにアセンブリ属性を追加しましたか?

[assembly: ExportRenderer(typeof(DarkViewCell), typeof(DarkViewCellRenderer))] 
namespace MyProject.iOS 
{ 
    public class DarkViewCellRenderer : ViewCellRenderer 
    { 
    } 
} 
+0

私が試した最初のこと –

+0

カスタムレンダラの何かが動作しているのですか、まったく動作していませんか?私はちょうどそれが必要に応じて正確に動作する自分のプロジェクトの1つからコードの一部をコピーしました。 –

+0

私の答えを更新しました。 –

0

私は同様の問題は、最近、私は、セルの背景色を設定する最良の方法は、あなたのGetCell方法

cell.ContentView.BackgroundColor = UIColor.Black; 
に次のように使用してみてください、細胞 ContentView

を使用することです発見しました

0
それは私のため

public override UITableViewCell GetCell(Cell item, UITableView tv) 
    { 
    var cell = base.GetCell(item, tv); 

    cell.SelectedBackgroundView = new UIView { 
    BackgroundColor = UIColor.DarkGray, 
    }; 
    return cell; 
} 

を働いているコードの下

フォローリンクの下のあなた

Xamarin.Forms ListView: Set the highlight color of a tapped item

関連する問題