渲染器获得当前焦点

Renderer get current focus

我创建了一个简单的 Renderer,看起来像这样

using Android.Runtime;
using Android.Widget;
using Example.Pages.MaterialPages;
using Example.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(MaterialsListView), typeof(MaterialsListViewRenderer))]
namespace Example.Droid.Renderers
{
   public class MaterialsListViewRenderer : ListViewRenderer
   {
      public MaterialsListViewRenderer() {}
   }

   internal class ScrollListener : Java.Lang.Object, AbsListView.IOnScrollListener
   {
      public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { }

      public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)
      {
         if (scrollState == ScrollState.TouchScroll)
         {
            // GET THE CURRENT FOCUSED ELEMENT
         }
      }
   }
}

现在我需要像 Java 中的 getCurrentFocus 那样获取当前焦点。 但是我如何在 Xamarin 中执行此操作?

您需要将 ListViewContext 转换为 Activity

internal class ScrollListener : Java.Lang.Object, AbsListView.IOnScrollListener
{
    public void OnScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { }

    public void OnScrollStateChanged(AbsListView view, [GeneratedEnum] ScrollState scrollState)
    {
        if (scrollState == ScrollState.TouchScroll)
        {
            // GET THE CURRENT FOCUSED ELEMENT
            var focused = ((Activity) view.Context).CurrentFocus;
        }
    }
}