Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview 在Android上更改Xamarin.Forms列表视图中的默认TextColor_Listview_Xamarin_Xamarin.android_Xamarin.forms_Android Styles - Fatal编程技术网

Listview 在Android上更改Xamarin.Forms列表视图中的默认TextColor

Listview 在Android上更改Xamarin.Forms列表视图中的默认TextColor,listview,xamarin,xamarin.android,xamarin.forms,android-styles,Listview,Xamarin,Xamarin.android,Xamarin.forms,Android Styles,我正在尝试更改Andoid上Xamarin.Forms列表视图中的默认TextColor ListView非常简单: List<string> cities = new List<string> { "Berlin", "Bonn", "Braunschweig", "Bremen" }; ListView listView = new ListView(); listView.ItemsSource = cities; Content = listView; text

我正在尝试更改Andoid上Xamarin.Forms列表视图中的默认
TextColor

ListView非常简单:

List<string> cities = new List<string> { "Berlin", "Bonn", "Braunschweig", "Bremen" };
ListView listView = new ListView();
listView.ItemsSource = cities;
Content = listView;
textAppearanceListItemSmall
使用属性
textAppearanceMedium
进行渲染,如您所见

因此,我将颜色和主题添加到资源中:

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

#000000
@样式/MyDefaultTextAppearanceM
@颜色/黑色
我还将主题添加到我的活动的属性中(
Theme=“@style/MyTheme
) 主题基本正常。使用
@color/Blue4
我可以更改HighlightColor


那么,如何在ListView黑色中获得文本颜色?我做错了什么?

在设置内容之前,请尝试添加以下内容:

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

谈话晚了,但也许这会让其他人失望

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

您还必须添加template.SetBinding(TextCell.TextProperty,“.”);然后它才能工作。
    <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>
[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;
        }
    }
}