以编程方式添加视图不起作用

时间:2015-02-02 10:17:55

标签: android android-linearlayout android-viewgroup

我有一个以编程方式扩充的父自定义布局(LinearLayout的子代)。

在构造函数中,我添加另一个布局作为我的父布局的子代,如下所示:

public ExtendedContentLinearLayout(Context context) {
    super(context);
    this.context = context;

    this.setClickable(false);

    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mTrigger = inflater.inflate(R.layout.nav_menu_board_expandable_children_outer, this, true);
    mTrigger.setOnClickListener(this);
    mTrigger.setBackgroundResource(R.color.da_blue);


}

父布局和“触发器”布局(上面添加的子项)正常工作并显示正常。

一旦用户触摸到这个“触发器”布局,我想向父母添加一个新的孩子 - 另一个具有更多内容的布局,因此我需要父布局来扩展并包含新添加的布局但这不起作用!

单击触发器布局不会添加新布局(至少未在屏幕上显示)。这是点击通话(点击事件正在运行):

   @Override
    public void onClick(View v) {
        App.disableTouchEventForDefaultDuration();

    Log.d("CLICKED", "CLICKED");


    LinearLayout mContent = new LinearLayout(context);
    mContent.setOrientation(HORIZONTAL);
    mContent.setBackgroundResource(R.color.da_indicator_pink);
    mContent.setVisibility(VISIBLE);
    ExtendedContentLinearLayout.this.addView(mContent);


}

2 个答案:

答案 0 :(得分:0)

mContent.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

请尝试上面的代码,尝试WRAP_CONTENT以及MATCH_PARENT

答案 1 :(得分:0)

我最终用XML创建了布局,然后使用:

对其进行充气
 View view = inflater.inflate(this.layout, null, false);

然后使用添加此视图 addView(视图)

这对我来说很好用