- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 ListView 控件中遇到 EggsToGo(向左/向右滑动效果)监听器的问题。我有问题 HERE并发现 EggsToGo 的问题与 ListView 监听器完全相同......当我的 ListView 上有一个监听器时,ScrollView 在那里不起作用......是否有一些解决方案可以使 EggsToGo 监听器在 ListView 上运行?
我的测试项目是HERE - 问题出在 FirstFragment(第一个 View )中。当我在 ListView 上有一个监听器时, ScrollView 不起作用。但是当我没有监听器时,滑动不起作用....
这是我认为的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<include
layout="@layout/toolbar_back_layout" />
<!-- Test Top Layout -->
<include
layout="@layout/view_shopname_lastupdate_ribbon" />
<!-- Layout Date and Picker-->
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:background="@android:color/white"
android:layout_height="50dp"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Období:"
local:MvxLang="Text Period"
android:textSize="16dp"
android:textStyle="normal"
android:textColor="@color/main_dark_gray"
android:ellipsize="marquee"
android:maxLines="1"
android:gravity="center"
android:layout_marginRight="10dp" />
<MvxSpinner
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/periodSpinner"
local:MvxBind="ItemsSource PeriodList; SelectedItem SelectedPeriod"
android:spinnerMode="dropdown" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1">
<oxyplot.xamarin.android.PlotView
android:id="@+id/dailySalesModel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/white" />
<MvxListView
android:id="@+id/dailySalesListView"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
local:MvxBind="ItemsSource DailySales"
local:MvxItemTemplate="@layout/view_dailysalesitem"
android:divider="@color/main_gray"
android:dividerHeight="1dp"
android:choiceMode="none"
android:layout_gravity="start"
android:background="@android:color/white"
android:listSelector="@android:color/transparent"
android:paddingTop="15dp" />
</LinearLayout>
<include
layout="@layout/view_bottomribbon" />
</LinearLayout>
</LinearLayout>
这是我的代码 fragment :
[MvxFragment(typeof(MainViewModel), Resource.Id.content_frame, true)]
public class DailySalesFragment : BaseBackFragment<DailySalesViewModel>, View.IOnTouchListener
{
private Easter _easter;
private View _view;
protected override int FragmentId => Resource.Layout.fragment_dailysales;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var ignore = base.OnCreateView(inflater, container, savedInstanceState);
_view = this.BindingInflate(FragmentId, null);
var orientation = Resources.Configuration.Orientation;
if (orientation == Orientation.Landscape)
{
var metrics = Resources.DisplayMetrics;
var height = CoreHelper.ConvertPixelsToDp(metrics.HeightPixels, Resources);
if (height <= 360)
{
var topLayout = _view.FindViewById<LinearLayout>(Resource.Id.topLayout);
if (topLayout != null)
{
topLayout.Visibility = ViewStates.Gone;
}
}
}
var plotView = _view.FindViewById<PlotView>(Resource.Id.dailySalesModel);
var bindset = this.CreateBindingSet<DailySalesFragment, DailySalesViewModel>();
bindset.Bind(plotView).For(q => q.Model).To(vm => vm.Model);
bindset.Apply();
_easter = new Easter(new KonamiCode());
var easyEgg = new CustomEgg("Easy")
.WatchForSequence(Command.SwipeLeft(), Command.SwipeRight());
_easter = new Easter(easyEgg);
_easter.CommandDetected += cmd => DoSwipe(cmd.Value);
var model = _view.FindViewById<PlotView>(Resource.Id.dailySalesModel);
var listView = _view.FindViewById<MvxListView>(Resource.Id.dailySalesListView);
model?.SetOnTouchListener(this);
listView?.SetOnTouchListener(this);
InitializeSwipeButtons();
InitializeShopPicker();
return _view;
}
public override void OnConfigurationChanged(Configuration newConfig)
{
base.OnConfigurationChanged(newConfig);
ViewModel.RefreshView();
}
private void InitializeShopPicker()
{
var shopLayout = _view.FindViewById<LinearLayout>(Resource.Id.shopLayout);
if (shopLayout != null)
{
shopLayout.Click += delegate
{
ShowShopPickerDialog();
};
}
}
private void ShowShopPickerDialog()
{
var dialog = new ShopPickerDialogFragment(ViewModel.ShopId);
dialog.DialogClosed += OnDialogClosed;
dialog.Show(this.Activity.FragmentManager, null);
}
private async void OnDialogClosed(object sender, Helpers.ShopPickerDialogEventArgs e)
{
if (e.IsChanged)
{
var shop = e.Shop;
await ViewModel.ChangeShop(shop);
}
}
private void InitializeSwipeButtons()
{
var leftButton = _view.FindViewById<ImageButton>(Resource.Id.leftButton);
if (leftButton != null)
{
leftButton.Click += delegate
{
DoSwipe("RIGHT");
};
}
var rightButton = _view.FindViewById<ImageButton>(Resource.Id.rightButton);
if (rightButton != null)
{
rightButton.Click += delegate
{
DoSwipe("LEFT");
};
}
}
private void DoSwipe(string swipeText)
{
if (swipeText.Equals("LEFT"))
{
FragmentManager.BeginTransaction()
.SetCustomAnimations(Resource.Animation.slide_from_right, Resource.Animation.slide_to_left)
.Replace(Resource.Id.content_frame, GroupSalesFragment.NewInstance(null))
.Commit();
}
if (swipeText.Equals("RIGHT"))
{
FragmentManager.BeginTransaction()
.SetCustomAnimations(Resource.Animation.slide_from_left, Resource.Animation.slide_to_right)
.Replace(Resource.Id.content_frame, ReportsFragment.NewInstance(null))
.Commit();
}
ViewModel.SwipeView(swipeText);
}
private int ConvertDpToPixels(int dp)
{
var pixels = dp * Resources.DisplayMetrics.Density;
return (int)pixels;
}
private void RefreshLayout(object sender, EventArgs e)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += WorkerDoWork;
worker.RunWorkerCompleted += WorkerCompleted;
worker.RunWorkerAsync();
}
private void WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
_dailySalesSwipeRefreshLayout.Refreshing = false;
}
private void WorkerDoWork(object sender, DoWorkEventArgs e)
{
Task.Run(ViewModel.ExecuteRefreshAsync);
}
public bool OnTouch(View v, MotionEvent e)
{
_easter.OnTouchEvent(e);
return true;
}
}
最佳答案
When I have a listener on listview, the scrollview doesnt work. But when I don't have a listener, the swipe doesn't work
Easter
的OnTouch
方法有问题,我不知道它的逻辑,但你可以在OnTouch
中自己做实现此功能。
您可以对整个 FirstFragment
布局使用 SetOnTouchListener
方法,并在您的 OnTouch
方法中实现您的逻辑,这是我的代码:
var view = base.OnCreateView(inflater, container, savedInstanceState);
......
view.SetOnTouchListener(this);
//model?.SetOnTouchListener(this);
//listView?.SetOnTouchListener(this);
float mPosX = 0;
float mCurPosX = 0;
float mPosY = 0;
float mCurPosY = 0;
public bool OnTouch(View v, MotionEvent e)
{
switch (e.Action)
{
case MotionEventActions.Down:
mPosX = e.GetX();
mCurPosX = mPosX;
mPosY = e.GetY();
mCurPosY = mPosY;
break;
case MotionEventActions.Move:
mCurPosX = e.GetX();
mCurPosY = e.GetY();
float xDistance = Math.Abs(mCurPosX - mPosX);
float yDistance = Math.Abs(mCurPosY - mPosY);
if (xDistance > yDistance && mCurPosX - mPosX > 0)//Swip Right
{
DoSwipe("RIGHT");
}
else if (xDistance > yDistance && mCurPosX - mPosX < 0)//Swip Left
{
DoSwipe("LEFT");
}
break;
default:
break;
}
return true;
}
效果类似this .
关于android - View 中的 Xamarin Android EggsToGo(滑动手势)监听器不适用于 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46073827/
我已经从github https://github.com/xamarin/xamarin-forms-samples下载了Xamarin.Form示例项目 打开任何示例项目后,它不允许我在iOS S
我收到此错误: "MyApp\App.cs(7,7): Error CS0246: The type or namespace name 'Xamarin' could not be found (a
我想知道 Xamarin 是否带有 Mono 运行时及其所有应用程序包。在这种情况下,如果两个基于 Xamarin 的应用程序安装在一个设备上,该设备将拥有两个 Mono 运行时权利。这是 Xamar
如何将库导入 Xamarin? 例如,我将如何导入 json.net为我的项目使用 xamarin? 谢谢 最佳答案 Json.NET可免费获得精美包装 Xamarin-compatible Comp
我不知道如何在输入框中置顶占位符文本。 我有一个很大的输入框,想把占位符文本放在顶部。 最佳答案 您需要为每个平台创建一个自定义渲染器以对齐占位符,如下所示: public class Placeh
我很难找到有关Xamarin.Forms的后台任务支持的文档。 Xamarin.Forms是否提供对定期后台任务的支持? 我需要为Windows Phone 10和Android都实现此功能。 最佳答
Xamarin.iOS中是否提供iOS Picker?我进行了详尽的搜索,但是没有示例,也没有信息可查。但是,它在Xamarin.Form中可用。 最佳答案 UIPickerView的真实示例示例:(
有谁知道是否可以使用 Xamarin.Forms 创建CardView样式(可滚动)列表?我们需要它在iOS和Android上将呈现为相同的。还需要调整阴影等属性(略微提高每张卡) 最佳答案 这是一个
所以,我对 Xamarin 有点陌生,我试图弄清楚如何显示一个包含用户文本输入字段的弹出窗口。 DisplayAlert 不这样做,因为它没有文本输入字段。我应该使用什么? 最佳答案 您可以使用 Di
我有一个运行良好的表单应用程序,但我注意到当页面出现时,背景颜色在几分之一秒内设置不正确。 我有这个代码用于我的 OnAppearing protected override async vo
您好,我正在开发一个具有登录功能的应用程序,它可以选择让您保持登录状态,即使您关闭该应用程序也是如此。 问题是什么?这就是我在 App.cs 中所做的: var statusLog = Appli
由于BackgroundImage是一个字符串,您应该如何设置Page的背景图像?我将不胜感激任何建议。 到目前为止,我已经尝试过: MainPage = new ContentPage {
如何使用 Renderer 在 Xamarin Forms 中使用渐变效果创建此按钮? 最佳答案 在 xamarin 中,您不能将渐变颜色添加为内置功能。您必须创建不同的渲染功能。这个 link 将指
背景:我正在处理一个 C# 项目。过去,当我做 System.Console.WriteLine("Hello"); 我会看到一个弹出控制台打印“你好”。控制台今天消失了,我该怎么做才能让它再次出现?
我们每天都在使用 Xamarin 和 Xamarin Forms,并且经常遇到异常而没有任何关于如何调试的有用信息。 有时它是我们的目标,有时是 Xamarin 中的错误,尤其是 Xamarin Fo
我正在使用 xamarin studio(带有 nuget 包管理插件),并且在我的项目中有一些 nuget 包。 项目上下文菜单中有“管理”和“恢复 nuget 包”,但也有控制台吗? 最佳答案 X
我有一个 CustomCalendar 元素,它是通过扩展 ContentView 并在另一个 ContentPage 中使用此自定义 View 而创建的。我尝试使用非聚焦事件来检测外部点击。但是问题
因此,对于整个MVVM,我还是一个新手。我几乎了解它的基本知识。我有一个可以按原样工作的示例,但是我试图将其更改为MVVM样式。我只是尝试不同的例子,所以我可以学习。 (LoginPage.xaml)
我正在尝试使我的Xamarin项目在Prism和DryIoc中使用MVVM。 我主要想使用自动注册,如下所示: [AutoRegisterForNavigation] ... protected ov
我有一个问题,如何在 Forms Xamarin 中制作模态屏幕,如附加的图像。 我想知道你们是否可以向我发送一段代码或示例以了解如何做到这一点。 https://extravios.com.br/c
我是一名优秀的程序员,十分优秀!