Jak znaleźć szerokość widoku przed wyświetleniem widoku? Nie chcę dodawać niestandardowego widoku i dotknij wymiarów w OnChanged().Jak znaleźć szerokość widoku przed wyświetleniem widoku?
Odpowiedz
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
Proszę oznaczyć jako rozwiązany ^^ –
Możesz również pamiętać, że jeśli widok nie jest zawyżony, jego szerokość i wysokość będą równe 0. – Joru
Masz rację Joru. Użyłem ViewTreeObserver i rozwiązałem mój problem. Dziękuję wszystkim, którzy próbowali odpowiedzieć. –
@dmytrodanylyk - Myślę, że będzie to powrót szerokość & wysokość jako 0, więc trzeba korzystać z następujących rzeczy
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();
To daje odpowiedniej wysokości & szerokość.
To jest to, co muszę określić, czy powinienem rozpocząć nowy wiersz pól wyboru, najpierw czyniąc go pojedynczym linii, a następnie zapobiec przepełnieniu przez obliczenie szerokości ... idealne dziękuję. pochodzące z -> http://stackoverflow.com/a/24054428/1815624 – CrandellWS
Powinieneś użyć OnGlobalLayoutListener
, który jest wywoływany dla zmian w widoku, ale przed jego narysowaniem.
costumView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
costumView.getWidth();
}
});
Lubię używać tej techniki, jak na my answer on a related question:
Opublikuj runnable z onCreate()
które będą wykonywane, gdy widok został stworzony:
contentView = findViewById(android.R.id.content);
contentView.post(new Runnable()
{
public void run()
{
contentHeight = contentView.getHeight();
}
});
Kod ten będzie działał na główny wątek UI, po onCreate()
został zakończony.
To jest najlepszy sposób ...... PRACA !!!
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();
To wszystko.
'miarka' przyjmuje parę stałych całkowitych' View.MeasureSpec', a nie stałych paramatycznych układu. – Tom
- 1. Jak wyświetlić element zastępczy przed wyświetleniem komórek widoku tabeli?
- 2. Szerokość widoku siatki widoku
- 3. AngularJS: $ viewContentLoaded został uruchomiony przed wyświetleniem częściowego widoku.
- 4. Uruchamianie widoku logowania przed wyświetleniem kontrolera paska tabulacji
- 5. Ogranicz szerokość widoku JScrollPane
- 6. Ustaw szerokość widoku programowo
- 7. Ładowanie aktywności w tle przed jej wyświetleniem
- 8. Jak usunąć opóźnienie przed wyświetleniem QToolTip?
- 9. Jak znaleźć pozycję opiekuna w widoku NSTextView?
- 10. Jak ustawić szerokość kolumny w widoku siatki w systemie Android?
- 11. oddzwaniania przed widoku kalendarza zostanie zmieniony
- 12. Dodawanie widoku jako widoku do widoku głównego
- 13. przywracania stanu widoku przed zastosowaniem XML atrybuty
- 14. Szkielet - wykonywanie wielokrotnego pobierania() przed renderowaniem widoku
- 15. renderowanie widoku backbone.js przed pobieraniem modelu
- 16. Jak dodać niewyraźne wyświetlenie widoku z widoku?
- 17. Jak zwiększyć rozmiar widoku w widoku listy?
- 18. Jak uzyskać szerokość i wysokość widoku obrazu w systemie Android?
- 19. Jak uzyskać szerokość i wysokość widoku Web w Androidzie
- 20. Jak uzyskać lub obliczyć szerokość/wysokość nadmuchanego widoku?
- 21. Jak programowo ustawić szerokość i wysokość niestandardowego widoku?
- 22. JTabbedPane: Czynności wykonywane przed wyświetleniem wybranej karty
- 23. setRequestedOrientation przed wyświetleniem ProgressDialog prowadzi do awarii
- 24. Nie można znaleźć widoku dla ViewModel
- 25. Yii Kontroler nie może znaleźć żądanego widoku
- 26. Jak ustawić opóźnienie o 1 sekundę przed ustawieniem alfa widoku?
- 27. Znaleźć dokładną wysokość i szerokość widoku w trybie wielu przeglądarek (bez Prototype/jQuery)
- 28. Jak utworzyć półprzezroczystą warstwę widoku powyżej bieżącego widoku?
- 29. Sterownik widoku push w widoku kontrolera widoku modalnego
- 30. Wyświetlanie alertu od delegata aplikacji przed wyświetleniem alertu z viewDidload
czego dokładnie chcesz? opisz więcej –