2016-06-24 15 views
2

現在、AndroidとiOS用のXamarin.Forms PCLアプリケーションを開発中です。私のページの1つでは、ListViewを定義しています。 ListView.ItemTemplateのテンプレートは、<Image Source="some_Icon.png" />を使用してアイコンを表示します。アイコンは期待通りに表示されます(黒色)が、色を設定する方法が見つかりませんでした。Xamarin.Forms xamlページのアイコンの色を変更するには?

私はViewModelのロジックに基づいてこのアイコンを色付けしたいと思います。

私は、ドキュメントとStackOverlflowの両方の回答を無駄に検索しました。

  1. Xamarin.Forms PCLプロジェクトのアイコンを表示してスタイルを設定するより良い方法はありますか?

  2. Xamarin.Formsには、使用する可能性のある色ごとにリソース/イメージファイルが必要ですか?

+0

できません。透明にして背景色を設定してみてください。または、フォント(FontAwesomeなど)を作成して色を設定してみることもできます。それ以外の場合は、色ごとに異なるアイコンセットが必要になります。 – Jason

+0

可能な重複は、ここに回答http://stackoverflow.com/questions/37860955/add-overlay-color-to-an-image-using-xamarin-forms/37861038#37861038 –

+0

@ Jasonご意見ありがとうございます。私はそれらを試してみる機会はまだありませんでしたが、私はあなたに私の結果を知らせます。 – Bolezee

答えて

3

私はXamarin.FormsのIconizeで問題を解決しました。私は以下のIconizeサンプルコードに基づいて私のソリューションを実装しました。私の場合は

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:iconize="clr-namespace:FormsPlugin.Iconize;assembly=FormsPlugin.Iconize" 
     x:Class="Iconize.FormsSample.Page1" 
     Title="{Binding FontFamily}"> 

    <ContentPage.ToolbarItems> 
    <iconize:IconToolbarItem Command="{Binding ModalTestCommand}" Icon="fa-500px" /> 
    <iconize:IconToolbarItem Command="{Binding VisibleTestCommand}" Icon="fa-500px" IconColor="Red" /> 
    <iconize:IconToolbarItem Command="{Binding VisibleTestCommand}" Icon="fa-500px" IsVisible="{Binding VisibleTest}" /> 
    </ContentPage.ToolbarItems> 
    <ListView CachingStrategy="RecycleElement" ItemsSource="{Binding Characters}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
     <ViewCell> 
      <StackLayout Orientation="Horizontal"> 
      <iconize:IconImage HeightRequest="20" Icon="{Binding Key}" IconColor="Blue" WidthRequest="20" /> 
      <iconize:IconImage HeightRequest="20" Icon="{Binding Key}" BackgroundColor="Blue" IconColor="Yellow" WidthRequest="20" IconSize="10" /> 
      <iconize:IconButton FontSize="20" Text="{Binding Key}" TextColor="Red" WidthRequest="48" /> 
      <iconize:IconLabel FontSize="20" Text="{Binding Key}" TextColor="Green" VerticalTextAlignment="Center" /> 
      <Label Text="{Binding Key}" VerticalTextAlignment="Center" /> 
      </StackLayout> 
     </ViewCell> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    </ListView> 
</ContentPage> 

、私は単に私の元<Image .../>要素を交換し、 <iconize:IconImage HeightRequest="20" Icon="fa-circle" IconColor="{Binding CircleColor}" WidthRequest="20" />と交換しなければなりませんでした。

私のViewModelに、自分のロジックに基づいて必要に応じてアイコンの色を設定するCircleColorプロパティを追加しました。

+0

IconImageは良い解決策ですが、IconLabelはテキストだけで、ビットマップのオーバーヘッドはないので、IconLabelの使用をお勧めします。 – Jeremy

関連する問題