Intereting Posts
Android EditText maxLength позволяет пользователю вводить больше Android позволяет загружать несколько файлов (максимум 150 МБ) на PHP Server Виртуальное устройство не может быть удалено Обмениваться фотографиями через Intent (Facebook и co) Позиция CSS: исправлено появление размытых изображений в Android-браузерах Refresh / Reload / Re создать экземпляр фрагмента в системе вкладки Android Как добавить «Библиотека поддержки Android Design» в Eclipse с помощью ADT-плагина? Обнаружение устройства для отладки (ADB) не работает Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged ActivityManager: Исключение при запуске java.lang.IllegalArgumentException: val.length> 91 Что? Android: attr / listPreferredItemHeight делает и как? Что такое полный класс базы данных Android для существующей базы данных SQLite? Android: наложение на предварительный просмотр камеры на Android Ошибка AppCompat v7 r21 в значениях.xml? Как импортировать набор значков в проект Android Studio

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(); }}; 

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