2

AndadのXamarin.Forms ListViewでデフォルトのTextColorを変更しようとしています。Xamarin.FormsのデフォルトTextColorをAndroidで変更する

ListViewコントロールが非常に簡単です:それはこのようになりますデバイス上で

List<string> cities = new List<string> { "Berlin", "Bonn", "Braunschweig", "Bremen" }; 
ListView listView = new ListView(); 
listView.ItemsSource = cities; 
Content = listView; 

:私が持っているwnat何

enter image description here

TextColorが黒になるということです。 私が理解している限り、Xamarin Forms CustomRendererは、それぞれのアイテムに対してAndroid.Resource.Layout.SimpleListItem1が生成されます。

SimpleListItem1は、次のtextAppearanceを使用しています:あなたがhereを見ることができるよう

android:textAppearance="?android:attr/textAppearanceListItemSmall" 

textAppearanceListItemSmallは、レンダリングのための属性textAppearanceMediumを使用しています。

は、だから私はresoucesに色やテーマを追加しました:

<?xml version="1.0" encoding="UTF-8" ?> 
<resources> 
    <color name="Black">#000000</color> 
</resources> 


<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <style name="MyTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:textAppearanceMedium">@style/MyDefaultTextAppearanceM</item> 
    </style> 

    <style name="MyDefaultTextAppearanceM" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:textColor">@color/Black</item> 
    </style> 
</resources> 

は、私も自分の活動テーマは基本的に取り組んでいる(Theme = "@style/MyTheme) の属性にテーマを追加しました。 <item name="android:colorActivatedHighlight">@color/Blue4</item>でHighlightColorを変更できます。

リストビューの黒でテキストの色を取得するにはどうすればよいですか?私が間違っていることは何ですか?後期会話に

var template = new DataTemplate(typeof(TextCell)); 
template.SetValue(TextCell.TextColorProperty, Color.Black); 
listView.ItemTemplate = template; 

答えて

4

あなたがコンテンツを設定する前にこれを追加してみてください。

Xamlベースのソリューションです。非常に簡単です。ImageCellでTextColorを設定するだけです。これと同じように:

<ContentPage.Content> 
     <StackLayout VerticalOptions="FillAndExpand"> 
      <ListView x:Name="listView" VerticalOptions="FillAndExpand" 
       SeparatorVisibility="None"> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <ImageCell TextColor="Black" Text="{Binding Title}" 
          ImageSource="{Binding IconSource}"/> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 
     </StackLayout> 
    </ContentPage.Content> 
</ContentPage> 
+2

またtemplate.SetBinding追加する必要があります。(TextCell.TextPropertyを、 "")それは働いています。 – Chris

0

、多分これは他の道は以下となります。

0
[assembly: ExportRenderer(typeof(MyTextCell), typeof(MyTextCellRenderer))] 
namespace MyNamespace.Droid.Renderers 
{ 
    public class MyTextCellRenderer : TextCellRenderer 
    { 
     protected override Android.Views.View GetCellCore(Cell item, Android.Views.View convertView, ViewGroup parent, Context context) 
     { 
      Android.Views.View result = base.GetCellCore(item, convertView, parent, context); 

      (result as BaseCellView).SetDefaultMainTextColor(Color.Black); 

      return result; 
     } 
    } 
} 
関連する問題