我想要制作的应用程序,有很多类似的LinearLayouts和textViews需要以编程方式创建并按特定顺序放在屏幕上。
所以我决定定义一个返回一个元素的方法,为了更进一步的使用,我将把方法放在一些循环中来生成其他元素。但是当我以这种方式创建视图或布局时,没有任何显示或有时应用程序崩溃,就好像它已被发送null给addView()。它只适用于我在onCreate()中创建视图/布局然后我在那之后使用它。所以,我可以使用该方法创建我的布局/视图的任何想法?因为它们太多而且无法在onCreate()中逐个创建它们 这是方法:
public LinearLayout createLinearLayout(){
TextView tv_day = new TextView(this);
tv_day.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
tv_day.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
tv_day.setGravity(Gravity.END);
tv_day.setText("27");
LinearLayout ll_horizontal = new LinearLayout(getBaseContext());
LinearLayout.LayoutParams ll_horizontal_params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll_horizontal.setLayoutParams(ll_horizontal_params);
ll_horizontal.setOrientation(LinearLayout.HORIZONTAL);
ll_horizontal.addView(tv_day);
return ll_horizontal;
}
这是onCreate(),它不会添加任何带有textView的线性布局:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_month_view);
LinearLayout ll= createLinearLayout();
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.activity_month_view);
mainLayout.addView(ll);
}
答案 0 :(得分:0)
我认为这应该有所帮助 - 使用一些id在XML中添加一个空的线性布局。 - 在代码中引用该布局 - 动态地向该布局添加元素
答案 1 :(得分:0)
嘿只是检查你的代码。它的工作完美现在只是尝试这种方法。
public LinearLayout createLinearLayout(){
TextView tv_day = new TextView(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
tv_day.setLayoutParams(layoutParams);
tv_day.setGravity(Gravity.CENTER);
tv_day.setText("27");
LinearLayout ll_horizontal = new LinearLayout(getBaseContext());
LinearLayout.LayoutParams ll_horizontal_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll_horizontal.setLayoutParams(ll_horizontal_params);
ll_horizontal.setOrientation(LinearLayout.HORIZONTAL);
ll_horizontal.addView(tv_day);
return ll_horizontal;
}