如何在ScrollView中动态包装根布局

时间:2014-04-02 08:14:52

标签: android android-layout

我想为所有布局添加滚动视图。但动态。因为应用程序将以不同的屏幕大小运行,并且当我将获得小于特定大小的屏幕尺寸时,我想在滚动视图中显示布局。

所以我制作了这个方法,它会在屏幕很小的检查时被调用。我将传递我的活动,我想更改根布局以滚动视图或只是添加ScrollView作为根布局。因此,如果根布局是LinearLayout,那么我想将该布局放在ScrollView中。我还没有命名所有布局,这意味着我没有给布局提供ID,所以我不能使用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);
}

它给了我一个错误,说“你不能从null中删除视图”等。或者“你不能添加视图到布局,因为它已经有父视图”。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分: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);
}