/ / Modifica l'altezza relativa - android, layout, android-studio

Cambia relativelayout height - android, layout, android-studio

Ho ricevuto questo errore: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

Penso che l'errore sia causato dal fatto che ho un layout relativo in un layout lineare Ho cercato gli stessi problemi:Imposta i parametri di layout RelativeLayout a livello di codice: genera ClassCastException

Ma questo non ha aiutato

Il mio codice:

LinearLayout.LayoutParams paramsT1score = (LinearLayout.LayoutParams)mT1layoutScore.getLayoutParams();
// Changes the height and width to the specified *pixels*
paramsT1score.height = 80;
mT1layout.setLayoutParams(paramsT1score);

Questo è il mio .xml

</RelativeLayout>



<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="70dp"
android:orientation="horizontal" >

<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="70dp"
android:background="#314ebd"
android:id="@+id/LayoutT1score"
android:layout_toLeftOf="@+id/LayoutT2score">

<TextView
android:id="@+id/player1"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
android:text="0"
android:textSize="24dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:textColor="#ffffff" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Team 1"
android:id="@+id/lblTeam1"
android:layout_above="@+id/player1"
android:layout_alignLeft="@+id/player1"
android:layout_alignStart="@+id/player1"
android:textSize="24dp"
android:textColor="#ffffff" />

</RelativeLayout>

<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="60dp"
android:id="@+id/LayoutT2score"
android:background="#fbff62"
>

<TextView
android:id="@+id/player2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number"
android:text="0"
android:textSize="24dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="0dp"
android:textColor="#000000" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Team 2"
android:id="@+id/lblTeam2"
android:textSize="24dp"
android:textColor="#000000"
android:layout_above="@+id/player2"
android:layout_alignLeft="@+id/player2"
android:layout_alignStart="@+id/player2" />


</RelativeLayout>
</LinearLayout>

risposte:

1 per risposta № 1

Il tipo di parametri di layout è determinato dal tipo principale. Ottieni i parametri di layout da una vista mT1layoutScore e poi prova a installarli in un altro mT2layout il cui genitore è di tipo diverso.

Impostare i parametri di layout sullo stesso oggetto o, poiché si stanno modificando i parametri di layout sul posto, è sufficiente chiamare mT1layoutScore.requestLayout().


0 per risposta № 2

Hm, sembra che i parametri di mT1layoutScore siano LinearLayout.LayoutParams, ma i parametri di mT2layout sono RelativeLayout.LayoutParams.

Quindi, penso che dovresti creare

RelativeLayout.LayoutParams paramsT2score = (RelativeLayout.LayoutParams)mT2layout.getLayoutParams();

quindi copia tutti i parametri necessari da paramsT1score a paramsT2score e quindi aggiunto

mT2layout.setLayoutParams(paramsT2score);