Автоматическая настройка линейного отображения и полное клонирование линейного отображения

#java #android #xml #android-layout

Вопрос:

Добрый день!

Я начну с 2 вопросов:

1.- Я хочу, чтобы LinearLayour автоматически корректировал свой контент всякий раз, когда это необходимо (потому что я отключил элемент в макете).

2.- Клонировать линейный вывод полностью в зависимости от размера массива.

  1. У меня есть этот код (да, он довольно большой):
                  <TextView
                     android:id="@ id/textTitleScore"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="10dp"
                     android:layout_marginStart="15dp"
                     android:text="Votaciones"
                     android:fontFamily="@font/segoeprint"
                     android:textColor="@color/ourBlack3"
                     android:contentDescription="@string/titleFinalEvent"
                     android:textSize="28sp"/>
    
                 <RelativeLayout
                     android:id="@ id/constraint_team"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:onClick="activateContent"
                     android:background="@drawable/finaleventteambackground"
                     android:backgroundTint="@color/ourOrange">
    
                     <ImageView
                         android:id="@ id/imageView"
                         android:layout_width="80dp"
                         android:layout_height="50dp"
                         android:layout_alignParentStart="true"
                         android:layout_marginLeft="20dp"
                         android:layout_marginTop="15dp"
                         android:layout_marginBottom="10dp"
                         android:layout_centerVertical="true"
                         android:scaleType="fitXY"
                         android:src="@mipmap/littlelogomc" />
    
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="30sp"
                         android:text="Equipo 1"
                         android:fontFamily="@font/seguisbi"
                         android:textColor="@color/ourWhite"
                         android:layout_marginRight="30dp"
                         android:layout_alignParentEnd="true"
                         android:layout_centerVertical="true"
                         android:layout_marginBottom="10dp"/>
    
                 </RelativeLayout>
    
                 <LinearLayout
                     android:id="@ id/team1"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:orientation="vertical"
                     android:background="@drawable/finaleventteambackground">
    
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="20sp"
                         android:fontFamily="@font/segoeprint"
                         android:textColor="@color/ourBlack3"
                         android:layout_marginTop="20dp"
                         android:layout_marginLeft="20dp"
                         android:text="Presentación"/>
    
                     <RelativeLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="10dp">
    
                         <SeekBar
                             android:id="@ id/seekBarPresentation"
                             android:layout_width="240dp"
                             android:layout_height="30dp"
                             android:layout_marginLeft="10dp"
                             android:layout_centerVertical="true"
                             android:layout_alignParentStart="true"
                             android:progressDrawable="@drawable/custom_seekbar"
                             android:thumb="@drawable/thumb"/>
    
                         <RelativeLayout
                             android:layout_width="70dp"
                             android:layout_height="40dp"
                             android:layout_centerVertical="true"
                             android:background="@drawable/edittextbackground"
                             android:layout_marginRight="20dp"
                             android:layout_alignParentEnd="true">
    
                             <EditText
                                 android:id="@ id/editTextPresentation"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:gravity="right"
                                 android:layout_marginRight="5dp"
                                 android:textAlignment="gravity"
                                 android:layout_centerVertical="true"
                                 android:textSize="20sp"
                                 android:inputType="number"
                                 android:background="@android:color/transparent"
                                 android:hint="0"/>
                         </RelativeLayout>
    
    
                     </RelativeLayout>
    
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="20sp"
                         android:fontFamily="@font/segoeprint"
                         android:textColor="@color/ourBlack3"
                         android:layout_marginTop="10dp"
                         android:layout_marginLeft="20dp"
                         android:text="Servicio"/>
    
                     <RelativeLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="10dp">
    
                         <SeekBar
                             android:id="@ id/seekBarService"
                             android:layout_width="240dp"
                             android:layout_height="30dp"
                             android:layout_marginLeft="10dp"
                             android:layout_centerVertical="true"
                             android:layout_alignParentStart="true"
                             android:progressDrawable="@drawable/custom_seekbar"
                             android:thumb="@drawable/thumb"/>
    
                         <RelativeLayout
                             android:layout_width="70dp"
                             android:layout_height="40dp"
                             android:layout_centerVertical="true"
                             android:background="@drawable/edittextbackground"
                             android:layout_marginRight="20dp"
                             android:layout_alignParentEnd="true">
    
                             <EditText
                                 android:id="@ id/editTextService"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:gravity="right"
                                 android:layout_marginRight="5dp"
                                 android:textAlignment="gravity"
                                 android:layout_centerVertical="true"
                                 android:textSize="20sp"
                                 android:inputType="number"
                                 android:background="@android:color/transparent"
                                 android:hint="0"/>
                         </RelativeLayout>
    
    
                     </RelativeLayout>
    
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="20sp"
                         android:fontFamily="@font/segoeprint"
                         android:textColor="@color/ourBlack3"
                         android:layout_marginTop="10dp"
                         android:layout_marginLeft="20dp"
                         android:text="Sabor"/>
    
                     <RelativeLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="10dp">
    
                         <SeekBar
                             android:id="@ id/seekBarFlavour"
                             android:layout_width="240dp"
                             android:layout_height="30dp"
                             android:layout_marginLeft="10dp"
                             android:layout_centerVertical="true"
                             android:layout_alignParentStart="true"
                             android:progressDrawable="@drawable/custom_seekbar"
                             android:thumb="@drawable/thumb"/>
    
                         <RelativeLayout
                             android:layout_width="70dp"
                             android:layout_height="40dp"
                             android:layout_centerVertical="true"
                             android:background="@drawable/edittextbackground"
                             android:layout_marginRight="20dp"
                             android:layout_alignParentEnd="true">
    
                             <EditText
                                 android:id="@ id/editTextFlavour"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:gravity="right"
                                 android:layout_marginRight="5dp"
                                 android:textAlignment="gravity"
                                 android:layout_centerVertical="true"
                                 android:textSize="20sp"
                                 android:inputType="number"
                                 android:background="@android:color/transparent"
                                 android:hint="0"/>
                         </RelativeLayout>
    
    
                     </RelativeLayout>
    
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="20sp"
                         android:fontFamily="@font/segoeprint"
                         android:textColor="@color/ourBlack3"
                         android:layout_marginTop="10dp"
                         android:layout_marginLeft="20dp"
                         android:text="Imagen"/>
    
                     <RelativeLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="10dp">
    
                         <SeekBar
                             android:id="@ id/seekBarImage"
                             android:layout_width="240dp"
                             android:layout_height="30dp"
                             android:layout_marginLeft="10dp"
                             android:layout_centerVertical="true"
                             android:layout_alignParentStart="true"
                             android:progressDrawable="@drawable/custom_seekbar"
                             android:thumb="@drawable/thumb"/>
    
                         <RelativeLayout
                             android:layout_width="70dp"
                             android:layout_height="40dp"
                             android:layout_centerVertical="true"
                             android:background="@drawable/edittextbackground"
                             android:layout_marginRight="20dp"
                             android:layout_alignParentEnd="true">
    
                             <EditText
                                 android:id="@ id/editTextImage"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:gravity="right"
                                 android:layout_marginRight="5dp"
                                 android:textAlignment="gravity"
                                 android:layout_centerVertical="true"
                                 android:textSize="20sp"
                                 android:inputType="number"
                                 android:background="@android:color/transparent"
                                 android:hint="0"/>
                         </RelativeLayout>
    
    
                     </RelativeLayout>
    
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:textSize="20sp"
                         android:fontFamily="@font/segoeprint"
                         android:textColor="@color/ourBlack3"
                         android:layout_marginTop="10dp"
                         android:layout_marginLeft="20dp"
                         android:text="Tríptico"/>
    
                     <RelativeLayout
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="10dp">
    
                         <SeekBar
                             android:id="@ id/seekBarTriptych"
                             android:layout_width="240dp"
                             android:layout_height="30dp"
                             android:layout_marginLeft="10dp"
                             android:layout_centerVertical="true"
                             android:layout_alignParentStart="true"
                             android:progressDrawable="@drawable/custom_seekbar"
                             android:thumb="@drawable/thumb"/>
    
                         <RelativeLayout
                             android:layout_width="70dp"
                             android:layout_height="40dp"
                             android:layout_centerVertical="true"
                             android:background="@drawable/edittextbackground"
                             android:layout_marginRight="20dp"
                             android:layout_alignParentEnd="true">
    
                             <EditText
                                 android:id="@ id/editTextTriptych"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
                                 android:gravity="right"
                                 android:layout_marginRight="5dp"
                                 android:textAlignment="gravity"
                                 android:layout_centerVertical="true"
                                 android:textSize="20sp"
                                 android:inputType="number"
                                 android:background="@android:color/transparent"
                                 android:hint="0"/>
                         </RelativeLayout>
    
    
                     </RelativeLayout>
    
                     <androidx.appcompat.widget.AppCompatButton
                         android:layout_width="120dp"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="40dp"
                         android:layout_marginRight="10dp"
                         android:layout_marginBottom="20dp"
                         android:enabled="false"
                         android:background="@drawable/roundedbutton"
                         android:backgroundTint="@color/ourOrange"
                         android:text="Votar"
                         android:fontFamily="@font/segoeprint"
                         android:textFontWeight="700"
                         android:textColor="@color/ourWhite"
                         android:layout_gravity="center"
                         android:textSize="18sp"/>
    
                 </LinearLayout>
    
    
    
             </LinearLayout>
     

Первый RelativeLayout ( id/constraint_team) имеет событие OnClick (), которое отключает или включает следующий дочерний LinearLayout (@ id/team1). Но родительский LinearLayout(@ id/linear_score) не настраивается, когда я отключаю дочерний LinearLayout.

Я пытался добиться этого с помощью этого кода:

 if (linearLayout.isEnabled())
        {
            for (int i = 0; i < linearLayout.getChildCount(); i  )
            {
                View v = linearLayout.getChildAt(i);
                v.setVisibility(View.INVISIBLE);
                v.setEnabled(false);
            }
            linearLayout.setVisibility(View.INVISIBLE);
            linearLayout.setEnabled(false);
            //linearLayoutScore.getLayoutParams().height = LinearLayout.LayoutParams.WRAP_CONTENT;
            //ViewGroup.LayoutParams params = linearLayoutScore.getLayoutParams();
            linearLayoutScore.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT));
            linearLayoutScore.requestLayout();
        }
 

(Комментарии-это другие неудачные попытки, которые я пробовал)

с помощью этого кода вместо того, чтобы изменять только размер родительской линейки, он изменяет весь экран, чтобы он был только этой родительской линейкой. (Я читал этот набор.Параметры компоновки изменяют только высоту и ширину макета, но, похоже, это так не работает).

  1. Для второго я не нашел ничего полезного (возможно, я просто использую очень плохое ключевое слово в Google), В основном, если я получу число, например 3, я хочу скопировать свой дочерний LinearLayout и свой относительный вывод (@ id/constraint_team и @ id/team1) так много раз, как я могу этого добиться?

Заранее спасибо

Комментарии:

1. почему вы не используете recyclerview

2. Я бы не стал использовать относительные выкладки. Во всяком случае, ConstraintLayouts-это правильный путь; но я согласен с предыдущим пользователем: для этого и нужен список (RecyclerView). Набор данных, привязанный к набору представлений. При изменении данных представления обновляются, чтобы отразить это изменение.