rid*_*sun 4 linker android visibility mvvmcross
我知道Android存在链接问题,我知道使用LinkerPleaseInclude.但是我不确定将什么放入LinkerPleaseInclude.cs文件中以解决我遇到的问题.
我有一个视图,它使用Visibility转换器使用布尔IsBusy属性来确定是否应显示多个控件.我正在使用ProgressBar,TextView和ImageView.我尝试了许多组合来修复链接器问题.
当部署为调试时,一切正常,这只是一个发布问题.
例如,我的progressBar定义如下(可见性转换器以相同的方式用于其他控件)
<ProgressBar
android:id="@+id/pbHeaderProgress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"
local:MvxBind="Visibility Visibility(IsBusy)" />
Run Code Online (Sandbox Code Playgroud)
我已将以下内容添加到我的LinkerPleaseInclude.cs中.为简洁起见,我没有包含整个文件
public void Include(ProgressBar progressBar)
{
progressBar.Visibility = ViewStates.Invisible;
}
public void Include(TextView textView)
{
textView.TextChanged += (sender, args) => textView.Text = "" + textView.Text;
textView.Hint = "" + textView.Hint;
textView.Visibility = ViewStates.Invisible;
}
public void Include(ImageView imageView)
{
imageView.Visibility = ViewStates.Invisible;
imageView.Visibility = ViewStates.Visible;
imageView.Visibility = ViewStates.Gone;
}
public void Include(MyViewModel viewModel)
{
viewModel.PropertyChanged += (sender, args) => { };
}
public void Include(MvxVisibilityValueConverter converter)
{
converter.Convert(null, null, null, null);
}
Run Code Online (Sandbox Code Playgroud)
这些似乎都不起作用.有人帮助我,让我知道我应该投入什么才能让Visibility工作
问题在于,在构建Android应用程序的发布版本时,您有时会发现某些行为不起作用.这是由于它链接程序的方式.我认为它以一种方式优化,删除它认为不使用的代码.要在基于MvvmCross的应用程序中修复它,您必须将调用添加到您认为已优化的代码中.这是通过使用LinkerPleaseInclude.cs文件并添加对"缺失"代码的调用来完成的.在这种情况下,ProgressBar控件上的可见性无效.我曾尝试将代码添加到LinkerPleaseInclude.cs文件,但它无法正常工作.我找到了解决方案并添加了答案.
我将以下代码放入LinkerPleaseInclude.cs.我认为它有效,因为它同时使用了setter和getter
public void Include(ProgressBar ProgressBar)
{
progressBar.Visibility = !progressBar.Visibility;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |