2013-05-19 31 views
0

我正在研究一個從RelativeLayout擴展的子類,它有一個OnScaleGestureListener。我希望當你在視圖上縮放時,這個改變的高度(就像縮放,但調整對象的大小)。但是,我不知道該如何解釋它,這讓我覺得很奇怪。setlayoutParams()拋出異常

我的代碼是:

public class simpleOnScaleGestureListener extends SimpleOnScaleGestureListener { 
    @Override 
    public boolean onScale(ScaleGestureDetector detector) { 
     tmpScale = detector.getCurrentSpan()/detector.getPreviousSpan(); 
     Log.d("DEBUG", ".getCurrentSpan() is "+detector.getCurrentSpan()); 
     Log.d("DEBUG", ".getPreviousSpan() is "+detector.getPreviousSpan()); 
     Log.d("DEBUG", ".getScaleFactor() is "+detector.getScaleFactor()); 
     scaling = true; 
     RelativeLayout.LayoutParams params = new LayoutParams(kTicketWidth, (int) (getMeasuredHeight()*mScaleFactor)); 
     setLayoutParams(params); 
     //invalidate(); 
     requestLayout(); 
    return true; 
    } 
    @Override 
    public void onScaleEnd(ScaleGestureDetector detector) { 
     mScaleFactor = detector.getCurrentSpan()/detector.getPreviousSpan(); 
     adjustTickets(); 
     //Expand Animation 
     /*if (mScaleFactor >= kMinScale){ 
      ScaleAnimation anim = new ScaleAnimation(1, 1, mScaleFactor, 1); 
      startAnimation(anim); 
      tmpScale=1; 
      adjustTickets(); 
     } else if (mScaleFactor < kMinScale){ 
      ScaleAnimation anim = new ScaleAnimation(1, 1, mScaleFactor, 1); 
      startAnimation(anim); 
      tmpScale = kMinScale; 
      adjustTickets(); 
     } 
     scaling = false;*/ 
     Log.d("SCALE", "Scale have ended"); 
    } 
} 

而且,它需要我的例外是:

05-19 13:10:28.943: E/AndroidRuntime(15701): FATAL EXCEPTION: main 
05-19 13:10:28.943: E/AndroidRuntime(15701): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 
05-19 13:10:28.943: E/AndroidRuntime(15701): at android.widget.LinearLayout.measureVertical(LinearLayout.java:655) 
05-19 13:10:28.943: E/AndroidRuntime(15701): at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) 
05-19 13:10:28.943: E/AndroidRuntime(15701): at android.view.View.measure(View.java:15190) 

而且,我不知道爲什麼會發生的另一件事是,mScaleFactor變爲1.0不斷地,當它變成0.81464或1.28774時,它又變回1.0。有誰知道爲什麼發生這種情況?

回答

2

例外說明了什麼是

android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 

你想投一個的LinearLayout到RelativeLayout的問題,檢查你的XML文件

+0

在我的XML文件,我只加了我的自定義視圖,它是有看法我發佈的代碼。在該課堂內部,我添加了三個LinearLayouts,但是我正在調教的高度是這個自定義視圖的高度。 –