2016-11-05 9 views
0

特定のケースを処理するためにカスタムLongPressGestureRecognizerをViewCellのルートレイアウトに追加しましたが、追加した後、ViewCellをタップしたときの波紋効果がAndroidでなくなっています。私も、これは動作しないコードTapGestureRecognizerをViewCellに追加した後のリップル効果

  int[] attrs = { Android.Resource.Attribute.SelectableItemBackground }; 

      var ta = CrossCurrentActivity.Current.Activity.ObtainStyledAttributes(attrs); 

      var drawable = ta.GetDrawable(0); 
      nativeView.SetBackgroundDrawable(drawable); 
      ta.Recycle(); 

の下に使用してAndroid.Resource.Attribute.SelectableItemBackgroundに背景描画可能に設定し、ネイティブのビューを取得することにより、アニメーションをバック追加しようとしました。それを動作させる他の方法?

答えて

0

私が知りたいと思っている人のために、私は長い間押したジェスチャーレコグナイザーの目標を達成する方法を捨てました。それは、やり方が間違っているからです。 Androidでは、代わりにItemLongClickイベントを使用する必要があります。ここで私がやったことは、まず、ネイティブのListViewをいくつかの方法で見つけてください。私のやり方は、まずListViewのレンダラーを取得し、次に基底になるようにします。ListView。もう一つの方法は、ListViewを見つけるために、コードの下に使用することですが、この方法では、複数のListView

public static List<T> FindViews<T>(this ViewGroup viewGroup) where T : View 
    { 
     var result = new List<T>(); 

     var count = viewGroup.ChildCount; 
     for (int i = 0; i < count; i++) 
     { 
      var child = viewGroup.GetChildAt(i); 
      var item = child as T; 
      if (item != null) 
      { 
       result.Add(item); 
      } 
      else if (child is ViewGroup) 
      { 
       var innerResult = FindViews<T>(child as ViewGroup); 
       if (innerResult != null) 
       { 
        result.AddRange(innerResult); 
       } 
      } 
     } 
     return result; 
    } 
    var rootView =(ViewGroup)CurrentActivity.Window.DecorView.RootView 
    var nativeListView = rootView.FindView<Android.Widget.ListView>(); 

を持っている場合は、ItemLongClickイベントハンドラを添付し、これに、PageOnAppearingメソッドをオーバーライドし、より多くの作業が必要です。また、OnDisappearingメソッドをオーバーライドし、ItemLongClickイベントハンドラをデタッチします。これは重要。単純にコンストラクタのItemLongClickイベントハンドラを追加しても動作していないようです。

関連する問題