0

我正在尝试创建视图以添加到相对布局中,并在相对布局中具有视图,然后在主布局上显示。这看起来就像里面有元素的容器框,我希望能够在前一个下面添加一个带有相同元素的布局。这是到目前为止我拥有的代码,但我得到一个 onClick 错误,因为我正在通过按钮单击来测试它以创建新布局。请记住,这是在 Fragment 类中,我正在使用 ActionBarSherlock 来执行此操作。请任何人帮助我或给我任何提示。

这是代码:

RelativeLayout layout = new RelativeLayout(getSherlockActivity());
RelativeLayout layout2 = new RelativeLayout(getSherlockActivity());
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layout.setLayoutParams(layoutParams);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params4 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params5 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params6 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams containerParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

//Main layout
tv1 = new TextView(getSherlockActivity());
params1.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
tv1.setId(1);
tv1.setText("textView1");

tv2 = new TextView(getSherlockActivity());
params2.addRule(RelativeLayout.BELOW, tv1.getId());
params2.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
params2.setMargins(0, 0, 0, 16);
tv2.setId(2);
tv2.setText("textView2");

//Container layout
layout2.setBackgroundResource(R.color.display_panels);
layout2.setPadding(10, 0, 10, 10);
containerParams.addRule(RelativeLayout.ALIGN_LEFT, tv2.getId());
containerParams.addRule(RelativeLayout.ALIGN_RIGHT, tv1.getId());
containerParams.addRule(RelativeLayout.BELOW, tv2.getId());
containerParams.setMargins(0, 0, 0, 16);

tv3 = new TextView(getSherlockActivity());
params3.addRule(RelativeLayout.ABOVE, tv4.getId());
params3.addRule(RelativeLayout.ALIGN_LEFT, pb1.getId());
tv3.setId(3);
tv3.setText("textView3");

tv4 = new TextView(getSherlockActivity());
params4.addRule(RelativeLayout.CENTER_HORIZONTAL);
params4.addRule(RelativeLayout.ABOVE, pb1.getId());
tv4.setId(4);
tv4.setText("textview4");

pb1 = new ProgressBar(getSherlockActivity());
params5.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
params5.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
params5.addRule(RelativeLayout.LEFT_OF, ib1.getId());
pb1.setProgress(40);
pb1.setMax(100);

ib1 = new ImageButton(getSherlockActivity());
params6.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params6.addRule(RelativeLayout.ALIGN_TOP, pb1.getId());
//ib1.setImageResource(R.drawable.ic_green_ok);

layout.addView(tv1, params1);
layout.addView(tv2, params2);
layout2.addView(tv3, params3);
layout2.addView(tv4, params4);
layout2.addView(pb1, params5);
layout2.addView(ib1, params6);
//layout.addView(layout2, containerParams);
getSherlockActivity().setContentView(layout);

注释掉的代码是我之前在那里的代码,它不适用于它们,但我认为这应该可以工作:

layout.addView(layout2, containerParams);
4

1 回答 1

1

你也可以这样做

final TextView titleView = (TextView) itemLayout
            .findViewById(R.id.titleView);

而不是创建所有这些额外的参数,这将处理布局中的位置

于 2014-02-28T15:47:32.493 回答