Intereting Posts
Ошибка: MapFragment не может быть добавлен в файл android.support.v4.app.Fragment Ошибка Android Studio: org.gradle.process.internal.ExecException Как определить, на какой платформе работает текущее приложение в LibGDX? Ошибка при экспорте архивного файла или файловой системы с помощью Eclipse (Android) Предотвращение исключения функций из статической библиотеки при подключении к общей библиотеке? Проект Painful Unity экспортирует в Android каждую сборку (я делаю что-то не так) Android: обнаружение другого приложения начало воспроизводить аудио Как компилятор JIT помогает производительности приложений? Тестирование биллинга в приложении: «Издатель не может купить этот товар» ImageView в RelativeLayout имеет верхнее и нижнее дополнение Как нарисовать круг вокруг булавки с помощью Google MAPS API v2 Как предотвратить приложение thievery (для приложений Android)? Рассчитать размер изображения при использовании setCompoundDrawables для EditText Использование Qt / C ++ для вызова кода Java через JNI. FindClass не находит класс GetMeasuredWidth возвращает абсолютно неправильное значение

GetHeight возвращает 0 для всех объектов Android UI

Я создаю пользовательский интерфейс, и все это статично определено в XML. Все это имеет вес повсюду, и, хотя оно выглядит правильно, я хотел видеть, что на самом деле все имеет правильную высоту и все такое. Проблема в том, что независимо от того, где я называю .getHeight () для моего формата, я получил 0. Я пытался использовать как onCreate (), так и onStart (). То же самое. Случается также для всех объектов пользовательского интерфейса. Есть идеи?

package com.app.conekta; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.widget.Button; import android.widget.FrameLayout; import android.widget.Toast; public class Conekta extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public void onStart() { super.onStart(); } @Override public void onResume() { super.onResume(); FrameLayout fl1 = (FrameLayout) findViewById(R.id.headerFrameLayout); FrameLayout fl2 = (FrameLayout) findViewById(R.id.footerFrameLayout); Button b=(Button) findViewById(R.id.searchButton); Log.d("CONEKTA", String.valueOf(b.getHeight())); } } 

XML:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/headerFrameLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.05" android:background="#597eAA" > <ImageView android:id="@+id/logoImage" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#7ba1d1" android:src="@drawable/logo_conekta" /> </FrameLayout> <LinearLayout android:id="@+id/bodyLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.7" android:background="#f3f3f3" android:orientation="horizontal" > <FrameLayout android:id="@+id/leftBlankFrameLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0.15" android:background="#f3f3f3" > </FrameLayout> <LinearLayout android:id="@+id/centerVerticalLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0.7" android:orientation="vertical" > <FrameLayout android:id="@+id/topCenterFrameLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.35" > </FrameLayout> <TextView android:id="@+id/venueLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.025" android:text="What are you looking for?" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000" /> <EditText android:id="@+id/venueTextField" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.025" > <requestFocus /> </EditText> <FrameLayout android:id="@+id/middleCenterFrameLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.05" > </FrameLayout> <TextView android:id="@+id/locationLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.025" android:text="Where?" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000" /> <AutoCompleteTextView android:id="@+id/locationTextField" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.025" android:text="" /> <LinearLayout android:id="@+id/buttonLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.05" android:background="#f3f3f3" android:orientation="horizontal" > <FrameLayout android:id="@+id/leftButtonLinearLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0.1" > </FrameLayout> <Button android:id="@+id/searchButton" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0.8" android:background="#6fa8dc" android:text="Search" /> <FrameLayout android:id="@+id/rightButtonLinearLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0.1" > </FrameLayout> </LinearLayout> <FrameLayout android:id="@+id/bottomCenterFrameLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.35" > </FrameLayout> </LinearLayout> <FrameLayout android:id="@+id/rightBlankFrameLayout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="0.15" android:background="#f3f3f3" > </FrameLayout> </LinearLayout> <FrameLayout android:id="@+id/footerFrameLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.15" android:background="#7ba1d1" > </FrameLayout> </LinearLayout> 

Solutions Collecting From Web of "GetHeight возвращает 0 для всех объектов Android UI"

Короче говоря, представления еще не построены в onCreate (), onStart () или onResume (). Поскольку они технически не существуют (что касается ViewGroup), их размеры равны 0.

В течение долгого времени вы можете пойти здесь для лучшего объяснения того, как с этим справиться.

Как получить размеры представления?

Это 0, потому что как в onCreate, так и onStart, на самом деле пока не создано. Вы можете обойти это, слушая, когда действительно нарисован вид:

 final TextView tv = (TextView)findViewById(R.id.venueLabel); final ViewTreeObserver observer= tv.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { tv.getHeight() observer.removeGlobalOnLayoutListener(this); } }); 

Вызов для удаления слушателя существует, чтобы предотвратить повторные вызовы вашего пользовательского обработчика при изменении макета … если вы хотите их получить, вы можете его опустить.

Получив вашу кнопку в представлении, вы можете легко получить ее высоту и т. Д. Вы можете определить onClickListener следующим образом:

 Button b=(Button) findViewById(R.id.searchButton); b.setOnClickListener(ButtonClick); android.view.View.OnClickListener ButtonClick= new android.view.View.OnClickListener() { public void onClick(View v) { v.getHeight(); }}; 

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