Вычислить меру измерения перед отображением

Я пытаюсь добавить виды в LinearLayout динамически, насколько это возможно (в зависимости от ширины экрана).

Я делаю это до отображения LinearLayout на экране.

Мой LinearLayout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:background="#666"/> 

Мое представление для отображения в LinearLayout:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="10dp" android:background="#999"> <ImageView android:layout_width="48dp" android:layout_height="48dp" android:src="@drawable/no_photo"/> </FrameLayout> 

Я добавляю виды в макет:

 int allItems = 50; int currentItem = 0; while(currentItem < allItems) { FrameLayout view = (FrameLayout) inflater.inflate(R.layout.fl, null); linearLayout.addView(view); if (linearLayout.getMeasuredWidth() >= this.getWidth()) { linearLayout.removeView(view); break; } } 

Но linearLayout.getMeasuredWidth () и this.getWidth () равно 0;

Я знаю, что я должен использовать метод View.measure для вычисления размера представления, прежде чем он станет видимым, но я не знаю, где и как он используется.

    Отредактируйте свой код, как показано ниже:

     Display display = getWindowManager().getDefaultDisplay(); int maxWidth = display.getWidth(); int widthSoFar=0; int allItems = 50; int currentItem = 0; while(currentItem < allItems) { FrameLayout view = (FrameLayout) inflater.inflate(R.layout.fl, null); linearLayout.addView(view); view .measure(0, 0); widthSoFar = widthSoFar + view.getMeasuredWidth(); if (widthSoFar >= maxWidth) { linearLayout.removeView(view); break; } } 

    Надеюсь, это поможет вам

    Intereting Posts
    Не удается решить символ Android-проекта «LocationRequest» Android Studio SVN 1.8 Этот клиент слишком стар, чтобы работать с рабочей копией Неужели плохая практика хранить данные в статических переменных? Каковы наилучшие методы показа справочной информации Одиночное устройство внезапно прекратило выталкивать C2DM с моего сервера Android: уровни изоляции транзакций SQLite (ORMLite) Диалоговое окно предупреждения о множественном выборе с настраиваемой строкой строки Фатальный сигнал 11 (SIGSEGV) при 0x00000000 (код = 1) – PhoneGap Невозможно получить доступ к WEB API с помощью ip: port, но может с localhost: порт во время отладки VS Способы хранения переменных на протяжении всего времени работы приложения Android в телефоне Android – тот же OnClickListener для TextView и ImageView Alarm Manager не работает в фоновом режиме на Android 6.0 Сфотографировать с android ndk – камера api GetActionView () моего MenuItem возвращает null Android AdMob SDK странное поведение