2014-04-02 69 views
1

我想爲所有的佈局添加滾動視圖。但動態。由於該應用將以不同的屏幕尺寸運行,並且當屏幕尺寸小於特定尺寸時,我想在滾動視圖中顯示該屏幕布局。如何在ScrollView中動態包裝根目錄佈局

所以我做了這個方法,它會被調用,檢查屏幕很小。我會通過我的活動,我想要更改根佈局來滾動視圖或只是添加一個ScrollView作爲根佈局。所以如果根佈局是一個LinearLayout,那麼我想把這個佈局放在ScrollView中。而且我還沒有命名所有的佈局,這意味着我沒有給佈局編號,所以我不能使用findViewById

public static void SetActivityRoot(Activity c) { 
    View v = c.getWindow().getDecorView(); 
    // View v = v.getRootView(); 

    ScrollView sv = new ScrollView(c); 
    LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.MATCH_PARENT); 
    sv.setLayoutParams(lp); 

    ((ViewGroup)v.getParent()).removeView(v); 

    sv.addView((View) v); 
    ((ViewGroup)v.getParent()).addView(sv); 
} 

它給了我一個錯誤說,等等。或者說,「你不能從空刪除視圖」「你不能添加視圖佈局,因爲它已經父視圖」。我該如何做這項工作?

+0

你爲什麼這樣做,滾動視圖知道,我需要顯示滾動與否,如果屏幕尺寸大於內容滾動型大不會顯示出來,它會顯示只有當含量比屏幕尺寸更大 – Ishtiaq

+1

你可以在你的xml文件中使用scrollview,它會檢測內容是否不大於其大小,然後不顯示滾動條。 –

+0

其實應用程序有超過46個佈局。我們將增加更多。我不想去每個佈局並添加滾動視圖。所以我認爲我可以動態地做到這一點。如果我無法做到這一點,那麼最後的手段就是手動添加它們。 –

回答

0

終於解決了我的問題。

public static void SetActivityRoot(Activity c) { 
    View v = ((ViewGroup)c.findViewById(android.R.id.content)).getChildAt(0); 

    ScrollView sv = new ScrollView(c); 
    LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.MATCH_PARENT); 
    sv.setLayoutParams(lp); 

    ((ViewGroup) v.getParent()).removeAllViews(); 

    sv.addView((View) v); 
    c.addContentView(sv, lp); 
}