2016-08-27 20 views
1

FrameLayoutにドラッグ可能な子TextViewがありますが、このテキストまたは余白を変更しようとするとonViewReleasedメソッドとonViewPositionChangedメソッドが正しく動作しません(元の位置にスクロールします)。 TextViewをスクロールしています。私はそれを正しく使用するか、私が知るべきことがあるかどうかは分かりません。コードのViewDragHelperが正常に動作しない

一部:

ViewDragHelper.Callback callback = new ViewDragHelper.Callback() { 
     @Override public boolean tryCaptureView(View child, int pointerId) { 
      return child == indicator; 
     } 

     @Override public int clampViewPositionHorizontal(View child, int left, int dx) { 
      final int leftBound = getPaddingLeft(); 
      final int rightBound = getWidth() - indicator.getWidth() - leftBound; 
      final int newLeft = Math.min(Math.max(left, leftBound), rightBound); 
      return newLeft; 
     } 

     @Override public void onViewReleased(View releasedChild, float xvel, float yvel) { 
      if (indicator == releasedChild) { 
      if (releasedChild.getLeft() > ((endPointX - startPointX)/2)) { 
       textView.setText("FRUSTRATION"); 
       helper.settleCapturedViewAt(endPointX, getPaddingTop()); 
      } else { 
       textView.setText("INDICATOR"); 
       helper.settleCapturedViewAt(startPointX, getPaddingTop()); 
      } 
      invalidate(); 
      } 
     } 
     }; 

答えて

0

それは我々がのsetText(に取るすべての動きを思わ)、setMargin()は、多くの実験の後、子供のレイアウトreset.Soの原因となります、私たちは再配置すべきで見つかりました景色。setText()、setMargin()、またはonViewReleased()またはonViewPositionChanged()のレイアウトに影響するこのような場合は、現在の位置を保存してからinvalidate()を実行し、child.layout ()がonLayout()をトリガしたときに発生します。

他人に役立つことを願っています。質問は終了しました。

関連する問題