2017-10-30 3 views
0

Ich möchte ein BildButton zu einem bestimmten Constraint-Layout programmgesteuert hinzufügen. Eine, die auch an bestimmte Richtlinien gebunden ist. Bis jetzt habe ich die folgende Methode implementiert und es gibt keine Fehler, aber außer dem debugText scheint nichts zu passieren.Wenn Sie ein ImageButton programmgesteuert erstellen, wird es nicht zur Ansicht hinzugefügt

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); 
} 

Jeder Rat würde sehr geschätzt werden.

Antwort

0

werden Dieses Bild Button hinzufügen aber Sie haben Abhängigkeiten zu setzen Ihre Bedürfnisse anzupassen.

statt mit: previewImg.setImageBitmap(displayImage);

Verwendung dieses: previewImg.setImageResource(R.mipmap.ic_launcher);

public void addButtonImage() { 
    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.setImageResource(R.mipmap.ic_launcher); // 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); 
} 
+0

Danke für die Informationen, aber die Bild- oder Hintergrundfarbe wird immer noch nicht angezeigt. –

+0

KORREKTUR! etwas erscheint jetzt! Es ist nicht an der richtigen Stelle und musste es mit alexscmars Antwort unten kombinieren, aber genug, um mit mir zu arbeiten. Danke vielmals! –

0

Seien Sie vorsichtig mit Ihrer setContentView-Methode. Andere als this Antwort können Sie auf Ihre Antwort bekommen.

+0

Danke für den Hinweis, aber die verknüpfte Frage funktioniert auch nicht. –

0

Alles sieht OK aus, aber Sie definieren nie eine Ressourcen-ID für die hinzugefügte ImageView. Als Ergebnis wird Ihre Aussage previewImg.getId() return „NO_ID“

eine ID für den neuen ImageView wie folgt ein:

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

Sie Notwendigkeit LayoutParams Ihrer Image einzustellen:

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

previewImg.setLayoutParams(lp); 

auch müssen Sie Ränder festlegen und Polsterung.

+0

Danke für die Hilfe, jetzt erscheint etwas! es ist nicht an der richtigen Stelle und musste es mit Vikas Kumars Antwort oben kombinieren, aber genug für mich, um damit zu arbeiten. Danke vielmals! –

Verwandte Themen