返回布局或视图的方法

时间:2016-11-27 06:49:19

标签: android android-layout

我想要制作的应用程序,有很多类似的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);
}

2 个答案:

答案 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;
}