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:

  • come fare la visualizzazione circolare completa in android
  • Come leggere e scrivere UTF-8 su disco su Android?
  • Come posso utilizzare onTouchListeners su each parola in un TextView?
  • Come posso passare un object da un'attività all'altra su Android?
  • HttpPost funziona nel progetto Java, non in Android
  • passare i dati dall'intento a un'altra intenzione
  •  <ImageView android:id="@+id/photo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> 

  • WebView carica il sito web in linea, carica il file locale quando non è in linea
  • Esegui automaticamente un'app in un dispositivo multiplo in Android Studio
  • Android: Che cosa è R? Perché è così crittico?
  • Android CountDownTimer
  • Android: aumenta la dimensione dello stack di chiamate
  • Imansible creare o modificare dispositivi virtuali Android (AVD) da Eclipse, ADT 22.6
  • 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.