Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式创建ImageButton时,它不会添加到视图中_Java_Android_Android Layout_Android Constraintlayout - Fatal编程技术网

Java 以编程方式创建ImageButton时,它不会添加到视图中

Java 以编程方式创建ImageButton时,它不会添加到视图中,java,android,android-layout,android-constraintlayout,Java,Android,Android Layout,Android Constraintlayout,我想以编程方式将ImageButton添加到特定的约束布局。也受特定指导方针约束的人。到目前为止,我已经实现了下面的方法,它没有给出任何错误,但是,除了debugText之外,似乎什么也没有发生 public void addButtonImage () { setContentView(R.layout.activity_homepage); // - Moved out of method ConstraintLayout conL = (ConstraintLayout)

我想以编程方式将ImageButton添加到特定的约束布局。也受特定指导方针约束的人。到目前为止,我已经实现了下面的方法,它没有给出任何错误,但是,除了debugText之外,似乎什么也没有发生

public void addButtonImage () {

    setContentView(R.layout.activity_homepage); // - Moved out of method
    ConstraintLayout conL = (ConstraintLayout)findViewById(R.id.newLayout);
    ImageButton previewImg = new ImageButton(this);
    Guideline leftGl = (Guideline)findViewById(R.id.leftGideLine);
    Guideline rightGL = (Guideline)findViewById(R.id.rightGuideLine);
    ImageView header = (ImageView) findViewById(R.id.Header);

    previewImg.setImageBitmap(displayImage); // displayImage variable assigned out of method
    previewImg.setBackgroundColor(Color.parseColor("#FFFF00"));
    conL.addView(previewImg);

    ConstraintSet conS = new ConstraintSet();
    conS.clone(conL);

    conS.constrainHeight(pp.getId(), 90);
    conS.constrainWidth(pp.getId(), 0);
    conS.connect(previewImg.getId(), ConstraintSet.TOP, header.getId(), ConstraintSet.BOTTOM);
    conS.connect(previewImg.getId(), ConstraintSet.LEFT, leftGl.getId(), ConstraintSet.RIGHT);
    conS.connect(previewImg.getId(), ConstraintSet.RIGHT, rightGL.getId(), ConstraintSet.LEFT);
    conS.applyTo(conL);
}

任何建议都将不胜感激

请小心您的setContentView方法。除此之外,您还可以找到您的答案。

看起来一切正常,但您从未为添加的
图像视图定义资源id。因此,语句
previewImg.getId()
将返回“NO\u ID”

为新的
ImageView
设置一个id,如下所示:

    previewImg.setId(View.generateViewId()); // API 17+

这将添加图像按钮,但您必须设置约束以满足您的需要

而不是使用:
previewImg.setImageBitmap(displayImage)

使用这个:
previewImg.setImageResource(R.mipmap.ic_启动器)


需要设置ImageButton的LayoutParams

ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

previewImg.setLayoutParams(lp);

您可能还需要设置边距和填充。

谢谢您的建议,但是链接的问题也不起作用。谢谢您提供的信息,但是图像或背景颜色仍然没有显示。更正!现在有东西出现了!它不在正确的位置,必须与下面alexscmar的答案结合起来,但足以让我一起工作。非常感谢!谢谢你的帮助,现在有东西出现了!它不在正确的位置,必须将它与上面vikas kumar的答案结合起来,但足以让我使用。非常感谢!
ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

previewImg.setLayoutParams(lp);