如果 List 中的索引超过 20,如何激活水平 ScrollView 并拉伸图表 - 使用 xamarin c#
How to activate horizontal ScrollView if indexes from List is more than 20 and stretch the chart - using xamarin c#
我有一张包含动态数据的图表。
所以我希望当列表中的索引超过 20 时水平激活 Scrollview
并且我的图表水平拉伸?
我的 .xaml 文件如下所示:
<ScrollView>
<StackLayout>
<microcharts:ChartView x:Name="chartView"
HeightRequest="100"
BackgroundColor="#f7f77c"/>
</StackLayout>
</ScrollView>
我的填充数据的 .cs 代码如下所示:
List<Entry> entries = new List<Entry>();
for (int i = 0; i < result.Count - 1; i++)
{
entries.Add(
new Entry((float)result[i].Stoej)
{
Color = SKColor.Parse("#FF1943"),
Label = result[i].D.ToString(),
ValueLabel = result[i].Stoej.ToString()
});
}
chartView.Chart = new LineChart()
{
Entries = entries,
LineMode = LineMode.Spline,
LineSize = 8,
PointMode = PointMode.Circle,
PointSize = 18,
LabelTextSize = 40,
BackgroundColor = SKColors.Transparent
};
更新:
我这样尝试,但图表没有水平拉伸:
您可以检查您的列表是否大于 20 以启用:
<ScrollView x:Name="scroll" isEnabled="false">
<StackLayout>
<microcharts:ChartView x:Name="chartView"
HeightRequest="100"
BackgroundColor="#f7f77c"/>
</StackLayout>
</ScrollView>
List<Entry> entries = new List<Entry>();
for (int i = 0; i < result.Count - 1; i++)
{
entries.Add(
new Entry((float)result[i].Stoej)
{
Color = SKColor.Parse("#FF1943"),
Label = result[i].D.ToString(),
ValueLabel = result[i].Stoej.ToString()
});
}
if(entries.Count > 20)
{
scroll.IsEnabled = true;
scroll.HorizontalBarVisibility = Always;
}
或者自动让滚动启用,所以如果列表开始跳转用户设备屏幕,滚动将被调整。
出现问题是因为ChartView
的宽度是固定的(等于屏幕宽度),我们需要在后面的代码中手动设置宽度。
int itemWidth = 20; //define by you
chartView.WidthRequest = entries.Count * itemWidth;
并且不要忘记先设置 scroll.Orientation="Horizontal"
。
我有一张包含动态数据的图表。
所以我希望当列表中的索引超过 20 时水平激活 Scrollview
并且我的图表水平拉伸?
我的 .xaml 文件如下所示:
<ScrollView>
<StackLayout>
<microcharts:ChartView x:Name="chartView"
HeightRequest="100"
BackgroundColor="#f7f77c"/>
</StackLayout>
</ScrollView>
我的填充数据的 .cs 代码如下所示:
List<Entry> entries = new List<Entry>();
for (int i = 0; i < result.Count - 1; i++)
{
entries.Add(
new Entry((float)result[i].Stoej)
{
Color = SKColor.Parse("#FF1943"),
Label = result[i].D.ToString(),
ValueLabel = result[i].Stoej.ToString()
});
}
chartView.Chart = new LineChart()
{
Entries = entries,
LineMode = LineMode.Spline,
LineSize = 8,
PointMode = PointMode.Circle,
PointSize = 18,
LabelTextSize = 40,
BackgroundColor = SKColors.Transparent
};
更新:
我这样尝试,但图表没有水平拉伸:
您可以检查您的列表是否大于 20 以启用:
<ScrollView x:Name="scroll" isEnabled="false">
<StackLayout>
<microcharts:ChartView x:Name="chartView"
HeightRequest="100"
BackgroundColor="#f7f77c"/>
</StackLayout>
</ScrollView>
List<Entry> entries = new List<Entry>();
for (int i = 0; i < result.Count - 1; i++)
{
entries.Add(
new Entry((float)result[i].Stoej)
{
Color = SKColor.Parse("#FF1943"),
Label = result[i].D.ToString(),
ValueLabel = result[i].Stoej.ToString()
});
}
if(entries.Count > 20)
{
scroll.IsEnabled = true;
scroll.HorizontalBarVisibility = Always;
}
或者自动让滚动启用,所以如果列表开始跳转用户设备屏幕,滚动将被调整。
出现问题是因为ChartView
的宽度是固定的(等于屏幕宽度),我们需要在后面的代码中手动设置宽度。
int itemWidth = 20; //define by you
chartView.WidthRequest = entries.Count * itemWidth;
并且不要忘记先设置 scroll.Orientation="Horizontal"
。