我想为所有布局添加滚动视图。但动态。因为应用程序将以不同的屏幕大小运行,并且当我将获得小于特定大小的屏幕尺寸时,我想在滚动视图中显示布局。
所以我制作了这个方法,它会在屏幕很小的检查时被调用。我将传递我的活动,我想更改根布局以滚动视图或只是添加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中删除视图”等。或者“你不能添加视图到布局,因为它已经有父视图”。我怎样才能做到这一点?
答案 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);
}