2016-07-12 6 views
0

Jedes Mal, wenn ich die Höhe eines Linearlayout versuchen Einstellung, habe ich immer diese Ausnahme:Höhe einstellen linearen Layout programmatisch

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 

Hier ist mein Code:

LinearLayout.LayoutParams hide = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0); 
LinearLayout.LayoutParams show = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 100); 

driverMainOptions.setLayoutParams(hide); 
mapDirections.setLayoutParams(show); 

Gibt es eine spezielle Import-Anweisung Ich muss das richtig ausführen?

+0

Es scheint, dass ein Ihr Layout ist ein 'RelativeLayout' –

+0

Die Art der' LayoutParams' ein 'View' hat, hängt von seiner Mutter 'View', nicht was es selbst ist. Ihr 'LinearLayout' scheint in einem' RelativeLayout' zu liegen, ebenso wie 'RelativeLayout.LayoutParams', nicht' LinearLayout.LayoutParams'. –

+0

@JuanCruzSoler Die Layouts, die ich modifiziere, sind Linear. Das relative Layout ist so ziemlich das übergeordnete Element aller Objekte, aber die Objekte, die ich bearbeiten möchte, sind Linear – purewatashi21

Antwort

1

Diese

bei Android: How to Programmatically set the size of a Layout
LinearLayout lLayout = new LineaLayout(context); 
LayoutParams params = lLayout.getLayoutParams(); 

params.height = 200; 
params.with = 200; 
lLayout.setLayoutParams(parmas); 

siehe akzeptierte Antwort funktionieren soll

+0

Ah okay. Wäre es möglich, einen "alignParentBottom" -Wert auf "false" zu setzen? – purewatashi21

+0

@ purewatashi21 Sie müssen sicherstellen, dass 'LayoutParams'' RelativeLayout.LayoutParams' sind, dann können Sie verwenden: 'params.addRule (RelativeLayout.ALIGN_PARENT_BOTTOM, 0);'. –

+0

@ purewatashi21, genau das, was Mike M. sagte, müssen Sie ein RelativeLayout verwenden, bevor Sie das Attribut alignParentBottom verwenden können. – Franklyn