2

我想更改Andoid上的Xamarin.Forms ListView中的默认TextColor更改Xamarin.Forms Android上的默认TextColor Android上的Listview

ListView控件很简单:

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

在它看起来像这样的装置:

enter image description here

我wnat有,就是TextColor会变黑。 据我了解Xamarin Forms CustomRenderer会有一个Android.Resource.Layout.SimpleListItem1生成每个项目。

SimpleListItem1使用以下textAppearance:

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

textAppearanceListItemSmall使用属性textAppearanceMedium进行渲染,你可以看到here

所以我已经添加了色彩和主题,以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。

那么我怎样才能得到ListView黑色的文字颜色?我做错了什么?

回答

4

尝试添加该设置内容之前:

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

您还必须添加template.SetBinding;(TextCell.TextProperty, “”)那么它正在工作。 – Chris

0

末到谈话,但也许这将别人的道路。

基于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> 
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; 
     } 
    } 
}