我的项目中有所有必要的比例:
但是,当我启动我的应用程序时,似乎没有选择最佳缩放的启动画面.我将在Release x86中开始.它总是使用scale-100闪屏.
我使用SplashScreens的正确名称,它们位于我的项目中的"Assets"文件夹中:
我是否必须"激活"一个选项才能启用变量Splash Screens?或者为什么它总是选择一个太小的Splash Screen?
我正在研究一种自定义功能SwipeListView,该功能允许向左或向右滑动单元格,目前仅适用于Android。这工作得很好,但是由于某些原因TranslationX,单元格的变化ContentView会影响的其他单元格ListView。每第8个单元格也会更改一次TranslationX(至少在视觉上):
这是导致此行为的代码行:
mainContent.TranslationX = quota * Width + mainContentPositionX;
Run Code Online (Sandbox Code Playgroud)
我尝试了一些可能的解决方案,但没有一个起作用:
CachingStrategy的ListView(RetainElement,RecycleElement,RecycleElementAndDataTemplate)TranslationX,遍历my中的所有其他单元格ListView并将其设置TranslationX为0我确定问题在于单元正在被重用,这就是为什么要应用该TranslationX操作,但是如果是那样,那么我就感到困惑,为什么使用CachingStrategy=RetainElement不能解决问题。
我也将感谢能帮助调试此问题的想法。
我SwipeListView为iOS 实现了该功能,并且可以正常使用。似乎是Android问题。
现在,我可以确认这只是Android中的问题。iOS运行正常。
我正在开发一款聊天应用.在加载聊天消息并且消息可见5秒后,我想向服务器发送读取确认.这是我到目前为止所提出的:
public async void RefreshLocalData()
{
// some async code to load the messages
if (_selectedChat.countNewMessages > 0)
{
Device.StartTimer(TimeSpan.FromSeconds(5), SendReadConfirmation);
}
}
Run Code Online (Sandbox Code Playgroud)
当RefreshLocalData()被叫时,我知道用户选择了另一个聊天,或者当前聊天中有新消息.因此,当RefreshLocalData()被调用时,我必须取消当前的计时器以启动一个新计时器.
另一种情况,当我导航到另一个时,我必须取消计时器Page.这没有问题,因为ViewModel当发生这种情况时整个都被处理掉了.
使用上面的代码,如果RefreshLocalData()再次调用if 但是TimeSpan5秒的声明尚未结束,则该方法仍在执行.
有没有办法取消计时器(如果RefreshLocalData()再次调用)?
我正在创建一个Xamarin.Forms应用程序.我无法从代码背后设置样式.以下代码位于我的页面的构造函数中.
Style greenButton = new Style(typeof(Button))
{
Setters =
{
new Setter{Property = Button.BackgroundColorProperty, Value = Color.Green },
new Setter{Property = Button.TextColorProperty, Value = Color.Red}
}
};
Resources = new ResourceDictionary();
Resources.Add(greenButton);
Button createSL = new Button();
createSL.Text = "Create Stack Layout";
createSL.Style = (Style) Resources["greenButton"];
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了此错误消息.
未找到密钥异常表示字典中不存在"greenButton".
但是我已经完成了Xamarin.Forms文档中提到的所有内容.请帮我解决一下!
我在点击列表视图中的项目后尝试打开另一个视图.我尝试过添加一个TapGestureRegonizer甚至添加ViewCell网格等等.这些似乎都不起作用.我已经为标签添加了一个轻击手势,这似乎有效,但同样不适用于列表视图项目.这似乎是列表视图之类的简单问题,但似乎没有内置的功能.
Xaml:
<ListView x:Name="dataList"
ItemsSource="{Binding routeLabels}"
HasUnevenRows="True"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="3">
</ListView>
Run Code Online (Sandbox Code Playgroud)
背后的代码:
var listviewgesture = new TapGestureRecognizer();
listviewgesture.SetBinding(TapGestureRecognizer.CommandProperty,"LoadRoutePage");
dataList.GestureRecognizers.Add(listviewgesture);
Run Code Online (Sandbox Code Playgroud)
视图模型:
public ICommand LoadRoutePage { get; protected set; }
public DriverDashboardViewModel(INavigation navigation,MessagDatabase database)
{
this._database = database;
this.Navigation = navigation;
this.LoadNotifications = new Command(async () => await OpenNotificationsPage());
this.LoadRoutePage = new Command(async () => await OpenRoutePage());
}
public async Task OpenRoutePage()
{
await Navigation.PushAsync(new RoutePageView());
}
Run Code Online (Sandbox Code Playgroud)
要明确的是,该LoadNotifications方法确实可以打开页面,但却LoadRoutePage没有.所以我知道视图和视图模型之间存在某种程度的通信.