Android: Как позиционировать программно, программно созданные элементы в программно созданных макетах

Поэтому я пытаюсь создать этот глобальный раздел комментариев в своем приложении, и я понял, что должен загрузить комментарии в приложение, а затем создать элементы, которые будут содержать информацию. Я сделал все это, но теперь я не могу правильно расположить элементы. У меня есть ScrollView, который содержит LinearLayout который содержит 3 LinearLayouts (каждый из которых имеет ConstraintLayouts). Итак, последний (третий) LinearLayout пусто, когда программа загружается. При обнаружении нового комментария в базе данных новый комментарий ConstraintLayout делается и добавляется в него. Тогда один ImageButton и 2 TextViews а затем добавил в ConstrainLayout, Все, что создается после OnCreate метод содержится в ArrayLists, Вот что происходит, когда при извлечении кода появляется новый комментарий: когда ConstraintSet находится перед ConstraintLayout.LayoutParams, когда ConstraintSet находится после LayoutParams

и вот фактический код:

ConstraintLayout constraintLayout = new ConstraintLayout(getApplicationContext());

listNewConstraintLayouts.add(constraintLayout);

linearLayoutNewComments.addView(listNewConstraintLayouts.get(counterNewComs));  

listNewConstraintLayouts.get(counterNewComs).setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

final float scale = getApplicationContext().getResources().getDisplayMetrics().density;

MyImageButton imageButton = new MyImageButton(getApplicationContext());

imageButtonsNewComments.add(imageButton);

listNewConstraintLayouts.get(counterNewComs).addView(imageButtonsNewComments.get(counterNewComs));

TextView tvComment = new TextView(getApplicationContext());
commTextViewsNewComments.add(tvComment);
listNewConstraintLayouts.get(counterNewComs).addView(commTextViewsNewComments.get(counterNewComs));

TextView tvName_Time = new TextView(getApplicationContext());
name_time_NewComments.add(tvName_Time);
listNewConstraintLayouts.get(counterNewComs).addView(name_time_NewComments.get(counterNewComs));

//And here comes the fun part

imageButtonsNewComments.get(counterNewComs).setLayoutParams(new ConstraintLayout.LayoutParams( (int) (70 * scale + 0.5f), (int) (70 * scale + 0.5f)));
name_time_NewComments.get(counterNewComs).setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT));
commTextViewsNewComments.get(counterNewComs).setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.WRAP_CONTENT));

ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(listNewConstraintLayouts.get(counterNewComs)); //listNewConstraintLayouts.get(counterNewComs).getId()

constraintSet.connect(commTextViewsNewComments.get(counterNewComs).getId(), ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END,(int) (4 * scale + 0.5f));
constraintSet.connect(commTextViewsNewComments.get(counterNewComs).getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START,(int) (75 * scale + 0.5f));
constraintSet.connect(commTextViewsNewComments.get(counterNewComs).getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP,(int) (20 * scale + 0.5f));

constraintSet.connect(name_time_NewComments.get(counterNewComs).getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, (int) (75 * scale + 0.5f));
constraintSet.connect(name_time_NewComments.get(counterNewComs).getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, (int) (4 * scale + 0.5f));

constraintSet.connect(imageButtonsNewComments.get(counterNewComs).getId(), ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 0);
constraintSet.connect(imageButtonsNewComments.get(counterNewComs).getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, 0);

constraintSet.applyTo(listNewConstraintLayouts.get(counterNewComs));

/*imageButtonsNewComments.get(counterNewComs).setLayoutParams(new ConstraintLayout.LayoutParams( (int) (70 * scale + 0.5f), (int) (70 * scale + 0.5f)));
name_time_NewComments.get(counterNewComs).setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT));
commTextViewsNewComments.get(counterNewComs).setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.WRAP_CONTENT));*/

last_new_comment_id = rs.getLong(1);

counterNewComs++;

А вот как все должно быть:

            <android.support.constraint.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <angelzani.com.test2project.MyImageButton
                    android:id="@+id/firstComImgButton10"
                    android:layout_width="70dp"
                    android:layout_height="70dp"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <TextView
                    android:id="@+id/firstComTextViewName10"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="75dp"
                    android:layout_marginTop="5dp"
                    android:text="Name [Time]"
                    android:textSize="16sp"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <TextView
                    android:id="@+id/firstComTextView10"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginEnd="5dp"
                    android:layout_marginStart="75dp"
                    android:layout_marginTop="30dp"
                    android:background="@drawable/real_comments_back"
                    android:fontFamily="sans-serif-condensed"
                    android:shadowColor="@color/text_shadow"
                    android:shadowDx="1"
                    android:shadowDy="1"
                    android:shadowRadius="1"
                    android:text="Comment"
                    android:textColor="@color/light_font"
                    android:textSize="16sp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />
            </android.support.constraint.ConstraintLayout>

Извините, если у меня много грамматических и орфографических ошибок:(Любая помощь приветствуется!

0 ответов

Другие вопросы по тегам