Не могу увидеть мои программно добавленные текстовые представления в ConstraintLayout - PullRequest
0 голосов
/ 03 июля 2018

Я добавил 2 вида текста в ConstrainLayout в коде, но я их не вижу. Экран пуст. Пожалуйста, кто-нибудь может помочь мне разобраться в этом? Большое спасибо!

public class ActivitySixth extends AppCompatActivity {
    private TextView tv1;
    private TextView tv3;
    private ConstraintLayout mConstraintLayout;
    private static final int ID_CONS_LAY = 160;
    private static final int ID_TV1 = 160;
    private static final int ID_TV3 = 160;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sixth);

        mConstraintLayout = findViewById(R.id.parent_Constraint);
        ConstraintSet set = new ConstraintSet();
        set.clone(mConstraintLayout);

        tv1 = new TextView(this);
        tv3 = new TextView(this);

       tv1.setText("TextView number ONE");
       tv3.setText("TextView number THREE");

       tv1.setId(ID_TV1);
       tv3.setId(ID_TV3);

       mConstraintLayout.addView(tv1);
       mConstraintLayout.addView(tv3);

       set.connect(tv1.getId(), ConstraintSet.LEFT, R.id.parent_Constraint, ConstraintSet.LEFT, 0);
       set.connect(tv3.getId(), ConstraintSet.RIGHT, R.id.parent_Constraint, ConstraintSet.RIGHT, 0);
       set.applyTo(mConstraintLayout);
}

}

Ответы [ 3 ]

0 голосов
/ 03 июля 2018
TextView contactUs = new TextView(this);
contactUs.setText(R.string.contactus);
contactUs.setTextSize(25);
contactUs.setId(R.id.contactUs);

ConstraintLayout.LayoutParams clpcontactUs = new ConstraintLayout.LayoutParams(
    ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
contactUs.setLayoutParams(clpcontactUs);

constraintLayout.addView(contactUs);

ConstraintSet set = new ConstraintSet();
set.clone(mConstraintLayout);

set.connect(tv1.getId(), ConstraintSet.LEFT, R.id.parent_Constraint, ConstraintSet.LEFT, 0);
set.connect(tv3.getId(), ConstraintSet.RIGHT, R.id.parent_Constraint, ConstraintSet.RIGHT, 0);
set.applyTo(mConstraintLayout);

попробуйте что-нибудь подобное ..

исх. http://www.zoftino.com/adding-views-&-constraints-to-android-constraint-layout-programmatically

0 голосов
/ 03 июля 2018

Во-первых, ID s должны отличаться, во-вторых, вам нужно добавить ограничения к TextView s 'ширина / высота:

    set.connect(tv1.getId(), ConstraintSet.LEFT, R.id.parent_Constraint, ConstraintSet.LEFT, 0);
    set.constrainWidth(tv1.getId(), WRAP_CONTENT);
    set.constrainHeight(tv1.getId(), WRAP_CONTENT);
    set.connect(tv3.getId(), ConstraintSet.RIGHT, R.id.parent_Constraint, ConstraintSet.RIGHT, 0);
    set.constrainWidth(tv3.getId(), WRAP_CONTENT);
    set.constrainHeight(tv3.getId(), WRAP_CONTENT);
    set.applyTo(mConstraintLayout);

Кстати, чтобы избежать конфликтов, вы можете определять идентификаторы, используя ресурсы xml.

  1. создать ids.xml в папке res \ values ​​

  2. определить идентификаторы:

    <resources>
        <item type="id" name="textView1" />
    </resources>
    
  3. использовать определенный идентификатор:

    R.id.textView1
    
0 голосов
/ 03 июля 2018

Здравствуйте. Пожалуйста, следуйте ниже код

        ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.mainConstraint);
    ConstraintSet set = new ConstraintSet();

    ImageView view = new ImageView(this);
    layout.addView(view, 0);
    set.clone(layout);
    set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60);
    set.applyTo(layout);
...