2011-05-24 18 views
1

我已經建立了我的自定義滾動型佈局像下面安卓:設置RelativeLayout.LayoutParams,卻得到了FrameLayout.LayoutParams後來

public class MyScrollView extends ScrollView { 

RelativeLayout mContentView = null; 
public MyScrollView(final Context context) { 
    super(context); 

    RelativeLayout.LayoutParams adaptLayout = new RelativeLayout.LayoutParams(320, 480); 
    adaptLayout.setMargins(0, 0, 0, 0); 
    setLayoutParams(adaptLayout); 

    mContentView = new RelativeLayout(context); 
    RelativeLayout.LayoutParams adaptLayout2 = new RelativeLayout.LayoutParams(300, 960); 
    adaptLayout2.setMargins(0, 0, 0, 0); 
    mContentView.setLayoutParams(adaptLayout2); 

    Button btn = new Button(context); 
    btn.setText("start dialog"); 
    btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mContentView.getLayoutParams(); 
      params.height = 1000; 
      setLayoutParams(params); 
      MyScrollView.this.invalidate(); 
     } 

    }); 
} 

但是,我得到了FrameLayout.LayoutParams使用getLayoutParams的後面鍵入()。
令人困惑的行爲......任何想法?謝謝。

2月5日至25日:06:58.082:ERROR/AndroidRuntime(219):java.lang.ClassCastException:android.widget.FrameLayout $的LayoutParams
2月5日至25日:06:58.082:ERROR/AndroidRuntime( 219):at com.example.hello.MyScrollView $ 1.onClick(MyScrollView.java:42)
05-25 02:06:58.082:ERROR/AndroidRuntime(219):at android.view.View.performClick(View。的java:2344)
2月5日至25日:06:58.082:ERROR/AndroidRuntime(219):在android.view.View.onTouchEvent(View.java:4133)

+0

當我遇到類似問題時,我在視圖周圍創建了一個新的LinearLayout,並獲得對此的引用。但我不能完全理解你的問題。 – LiTTle 2014-12-03 13:14:52

回答

0

時可以顯示的代碼獲得佈局參數? ,我想你應該投你PARAMS到RelativeLayout.LayoutParams,做這樣的事情:

adaptLAyout = (RelativeLayout.LayoutParams)myRelativeLayout.getLayoutParams(); 

編輯:我看到你有一個自定義滾動型,所以你可以告訴我你在哪裏使用它?我認爲你在FrameLayout中使用它?嘗試在RelativeLayout中使用它,這將解決問題,因爲當你得到LayoutParams時,它會引用你的父級佈局,所以如果你在FrameLAyout中使用scrollView,你應該使用FrameLAyout.LayoutParams,或者你應該在RelativeLayout中使用它,

+0

我完成了你所做的,但是出現了ClassCastException。我發現真正的類型是在調試時的FrameLayout.LayoutParams。 – fifth 2011-05-24 10:38:08

+0

可以添加LogCat異常嗎?你有一個FrameLayout的地方,當你試圖獲得你的視圖的參數,android告訴你將參數投到FrameLayout.LayoutParams 並添加你的Xml,確保你的佈局xml中沒有FrameLayout? – Houcine 2011-05-24 10:52:53

+0

對不起,延遲迴復。我已更新主線程,請檢查以上 – fifth 2011-05-25 02:21:43