Come trovare la larghezza di una vista prima che venga visualizzata la vista? Non voglio aggiungere una visualizzazione personalizzata e toccare le dimensioni in OnChanged().Come trovare la larghezza di una vista prima che venga visualizzata la vista?
risposta
Display display = getWindowManager().getDefaultDisplay();
View view = findViewById(R.id.YOUR_VIEW_ID);
view.measure(display.getWidth(), display.getHeight());
view.getMeasuredWidth(); // view width
view.getMeasuredHeight(); //view height
Contrassegna come risolto ^^ –
Potresti anche tenere a mente che se la vista non è gonfiata la sua larghezza e altezza saranno 0. – Joru
Hai ragione Joru. Ho usato ViewTreeObserver e ho risolto il mio problema. Grazie a tutti coloro che hanno cercato di rispondere. –
@dmytrodanylyk - penso che tornerà larghezza & altezza 0 quindi è necessario utilizzare i seguenti cosa
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentview = inflater.inflate(R.layout.YOURLAYOUTNAME, null, false);
contentview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int width = contentview.getMeasuredWidth();
int height = contentview.getMeasuredHeight();
Vi darà giusta altezza & larghezza.
Questo è quello che ho bisogno di determinare se dovrei iniziare una nuova riga di checkbox, prima di renderlo un singolo linea e quindi prevenire l'overflow calcolando la larghezza ... perfetto grazie. provenendo da -> http://stackoverflow.com/a/24054428/1815624 – CrandellWS
È necessario utilizzare OnGlobalLayoutListener
che viene chiamato per le modifiche alla vista, ma prima che venga disegnato.
costumView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
costumView.getWidth();
}
});
Mi piace usare questa tecnica come da my answer on a related question:
Pubblica eseguibile da onCreate()
che verrà eseguito quando è stata creata la vista:
contentView = findViewById(android.R.id.content);
contentView.post(new Runnable()
{
public void run()
{
contentHeight = contentView.getHeight();
}
});
Questo codice verrà eseguito sul thread principale dell'interfaccia utente, dopo che onCreate()
è terminato.
Questo è il modo migliore ...... LAVORO !!!
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (fondo_iconos_height==0) { // to ensure that this does not happen more than once
fondo_iconos.getLocationOnScreen(loc);
fondo_iconos_height = fondo_iconos.getHeight();
redraw_function();
}
}
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
view.measure(size.x, size.y);
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
yourView.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
int yourView= m_hidableRowContainer.getMeasuredHeight();
Questo è tutto.
'measure' prende una coppia di costanti intere' View.MeasureSpec', non le costanti param del layout. – Tom
- 1. Android: ottieni l'altezza di una vista prima che venga disegnata.
- 2. UIBarButtonItem con visualizzazione personalizzata non visualizzata dopo la prima vista
- 3. findViewById in una vista personalizzata per trovare la vista figlio
- 4. ultima parola visualizzata in una vista testuale
- 5. Come oscurare la vista di sfondo quando viene visualizzata una vista personalizzata
- 6. $ (document) .ready() si attiva prima che venga caricata la vista parziale
- 7. Come ottenere la vista genitore dalla vista parziale
- 8. come nascondere l'utente della vista utente non usa la vista?
- 9. Come si apre la vista con la tastiera che appare quando la vista è già caricata?
- 10. Avvio di una vista di accesso prima che venga visualizzato il controller della barra delle schede
- 11. Implementare vista come la vista cercapersone
- 12. Impossibile trovare la vista per ViewModel
- 13. Come animare la traduzione di una vista
- 14. Espresso - Come verificare se viene visualizzata una vista
- 15. Vista raccolta intestazione non visualizzata
- 16. restringi JScrollPane larghezza vista
- 17. onPageFinished sta sparando prima che venga caricata la pagina
- 18. come modificare la superficie personalizzata Larghezza e altezza della vista
- 19. Come animare la vista dell'intestazione di UITableView
- 20. come caricare la vista in un'altra vista codeigniter 2.1?
- 21. Come rilevare la navigazione della pagina su Youtube e modificare l'HTML prima che la pagina venga visualizzata?
- 22. Come chiamare la funzione dopo che viene visualizzata la finestra?
- 23. come impostare nessuna animazione per la prima vista da ViewFlipper
- 24. Come determinare la dimensione di una vista Android in pixel?
- 25. Impostare la posizione assoluta di una vista
- 26. Come passare eventi a una vista padre, passando la vista figlio che ha attivato l'evento?
- 27. Ionic/Come aspettarsi che una vista memorizzata nella cache venga aggiornata?
- 28. Come aggiornare immediatamente la vista immagine
- 29. Come ridisegnare la vista FullCalendar?
- 30. Cambia la larghezza e l'altezza della vista personalizzata in Android
cosa vuoi esattamente ?? descrivi di più –