Aggiornamento del layoutParamet non funzionante

Sto cercando di calcolare la dimensione di questa image che verrà scaricata dal web utilizzando questa row imgLoader.DisplayImage(url, R.drawable.thumbnail_background, image); . Il problema è che orgHeight diventa zero e non si può dividere per zero. Ma perché questo orgHeight 0 è?

 // Add the imageview and calculate its dimensions //assuming your layout is in a LinearLayout as its root LinearLayout layout = (LinearLayout)findViewById(R.id.layout); ImageView image = (ImageView)findViewById(R.id.photo); ImageLoader imgLoader = new ImageLoader(getApplicationContext()); imgLoader.DisplayImage(url, R.drawable.thumbnail_background, image); int newHeight = getWindowManager().getDefaultDisplay().getHeight() / 2; int orgWidth = image.getWidth(); int orgHeight = image.getHeight(); //double check my math, this should be right, though int newWidth = (int) Math.floor((orgWidth * newHeight) / orgHeight); //Use RelativeLayout.LayoutParams if your parent is a RelativeLayout LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( newWidth, newHeight); image.setLayoutParams(params); image.setScaleType(ImageView.ScaleType.CENTER_CROP); layout.updateViewLayout(image, params); 

Il mio imageView xml è come questo:

  • Utilizzo di vector android Drawables sul crash pre Lollipop
  • eclipse, nuovo progetto applicativo android, "button successivo" è distriggersto nella sezione che vuole il nome del progetto
  • Quale taglia dovrebbe essere uno background per schermate ldpi, mdpi, hdpi e xhdpi?
  • Il modo migliore per aggiornare TextView, each minuto, al minuto
  • Servizio onStartCommand che viene chiamato una volta che l'attività termina
  • Perché i miei "post" caricano in diverse size in recyclerview di android?
  •  <ImageView android:id="@+id/photo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> 

  • Quali sono le caratteristiche predefinite dei caratteri in Android?
  • CountDownTimer- che l'utente aumenta. Problemi
  • Android: Ottenga aggiornato e eliminato solo il contatto
  • Android Studio 0.5.0 - Nessun completamento del codice di auto e riconoscimento di syntax degli errori dopo l'aggiornamento
  • Come impostare la properties; "android: drawableTop" di un button in fase di runtime
  • Finestra di dialogo del selettore data e ora
  • 2 Solutions collect form web for “Aggiornamento del layoutParamet non funzionante”

    Le viste non sono ancora state poste nel metodo onCreate() per cui le loro size sono 0. Inserisci un Runnable da onCreate() per get i valori corretti:

     image.post(new Runnable() { @Override public void run() { int newHeight = getWindowManager().getDefaultDisplay().getHeight() / 2; int orgWidth = image.getWidth(); int orgHeight = image.getHeight(); //double check my math, this should be right, though int newWidth = (int) Math.floor((orgWidth * newHeight) / orgHeight); //Use RelativeLayout.LayoutParams if your parent is a RelativeLayout LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( newWidth, newHeight); image.setLayoutParams(params); image.setScaleType(ImageView.ScaleType.CENTER_CROP); layout.updateViewLayout(image, params); } }); 

    È anche ansible utilizzare il ViewTreeObserver per get i valori non appena il layout viene eseguito.

    Rif: Come si può sapere quando è stato disegnato un layout?

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.