2014-09-26 18 views
18

Provo a modificare l'altezza del layout a livello di programmazione. Ho due pulsanti. In un pulsante cambio la posizione del layout e il secondo pulsante cerco di ricevere la posizione di salvataggio che mi è stata la prima volta.Android RelativeLayout modifica dell'altezza al livello di programmazione

<RelativeLayout 
    android:id="@+id/popaplayout" 
    android:layout_width="fill_parent" 
    android:layout_height="200dp" > 

Questo è un mio layout e in primo pulsante ho scritto

RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.FILL_PARENT, 
        RelativeLayout.LayoutParams.FILL_PARENT); 
parms.addRule(RelativeLayout.BELOW, R.id.movies_title_layout); 
scrollpopap.setLayoutParams(parms); 
scrollpopap.setScrollingEnabled(true); 

e secondo pulsante

RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, 300); 
rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
scrollpopap.setLayoutParams(rel_btn); 
scrollpopap.setScrollingEnabled(false); 

In xml lima che ho scritto altezza 200dp e programmazione 300 e ci sono diverse altezze. Come posso scrivere salva altezza in modo programmatico?

se qualcuno conosce soluzione di aiutarmi grazie

risposta

31

prima convertire 200 dp in pixel -

final float scale = getContext().getResources().getDisplayMetrics().density; 
int pixels = (int) (200 * scale + 0.5f); 

Quindi impostare programmaticamente,

RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, pixels); 
      rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
      scrollpopap.setLayoutParams(rel_btn); 
      scrollpopap.setScrollingEnabled(false); 
+1

grazie che sta funzionando – Beka

+0

se ho un bambino dentro RelativeLayout con match_parent in larghezza e modificare la larghezza da RelativeLayout, come si può aggiornare la larghezza del bambino? – jose920405

20

Convertire DP a Px come questo.

final float scale = getContext().getResources().getDisplayMetrics().density; 
int px = (int) (100 * scale + 0.5f); // replace 100 with your dimensions 

Imposta alcuni layout_gravity del layout relativo. e Cambia altezza e larghezza con codice java.

RelativeLayout rl = (RelativeLayout) findViewById(R.id.yourId); 
rl.getLayoutParams().height = px; 
rl.getLayoutParams().width = px; 
+0

Non hai dp qui ... – Kostya

3

Utilizzare questa

RelativeLayout layout = (RelativeLayout) findViewById(R.id.yourlayout_id); 
// Gets the layout params that will allow you to resize the layout 
LayoutParams params = layout.getLayoutParams(); 
params.height = 320; 
params.width = 320; 
2

Se si intende modificare l'altezza RelativeLayout, quindi questa guida.

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.yourId); 
relativeLayout.getLayoutParams().height = 100; 
relativeLayout.getLayoutParams().width = 100; 
Problemi correlati