0
我正在做一个家庭替代应用程序,我使用viewpager有三个3横向导航布局。问题是这些布局存储在三个不同的布局资源文件(layout1.xml,layout2.xml和layout3.xml)中,而不是他们,我想动态地为每个屏幕创建内容。以编程方式创建布局以添加到ViewPager?
这是规定每一页的内容Adapater的摘录:
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.layout1;
break;
case 1:
resId = R.layout.layout2;
break;
case 2:
resId = R.layout.layout3;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
我如何编程方式创建一个简单的布局,并把它放在我的屏幕之一?我一直在做这方面的工作,找不到任何有关如何做到这一点的线索,任何指向正确方向的信息都会很有用。
编辑:
这就是我现在想,我不认为我是很离谱,但所有屏幕都是空白:
Context context = collection.getContext();
LinearLayout layout = new LinearLayout(context);
TextView view = new TextView(context);
switch (position) {
case 0:
view.setText("some text");
view.setPadding(5, 5, 5, 5);
view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
break;
case 1:
view.setText("some text");
view.setPadding(5, 5, 5, 5);
view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
break;
case 2:
view.setText("some text");
view.setPadding(5, 5, 5, 5);
view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
break;
}
layout.addView(view);
return layout;
我只是试图实现它,应用程序不会崩溃,但我没有看到每个屏幕上的文本(所有屏幕都是空白的)。我编辑了这个问题,以显示我的尝试。你能否看到我是否犯了一些错误? – lisovaccaro
我在阅读完编辑后更新了答案。请检查。 – Enigma
谢谢,它似乎工作。只是一个问题:当我在第二行使用这段代码时,出现错误“集合无法解析”,我将它更改为容器,因为它看起来应该与方法中传递的参数匹配。这个可以吗?一切似乎工作正常,但我想问 – lisovaccaro