2012-08-15 6 views
11

У меня есть LinearLayout набор высоты, как match_parent, как показано ниже:Как получить высоту LinearLayout

<LinearLayout 
    android:id="@+id/list_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

Я хочу, чтобы получить высоту этой LinearLayout.
я использовал код ниже:

LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout); 
int h = ll_list.getHeight(); 

Но возвращать нуль.
Как я могу это сделать?

+0

если вы собираетесь иметь фоновую задачу оптимизации растровых изображений (или что-то подобное), прежде чем показывать их на экране, я действительно не могу ни на что в любой момент нуждаться в этом значении. Если бы вы могли рассказать нам немного больше о вашем приложении, мы могли бы указать вам лучшую альтернативу дизайна. – Budius

+0

http://stackoverflow.com/a/41705445/5664529 проверить это, это может вам помочь. –

ответ

36

Прежде всего: ваш LinearLayout идентификатор left_layout, не list_layout.

Кроме того, ll_list.getHeight() вернет 0 (а также ll_list.getWidth()), если он еще не составлен.

решение было бы получить высоту после того, как на ваш взгляд является layouted:

ll_list.post(new Runnable(){ 
    public void run(){ 
     int height = ll_list.getHeight(); 
    } 
}); 

И убедитесь, что ваш ll_list является final.

+0

Как его можно отрисовать. – brian

+0

@brian это не ваша проблема. Просто убедитесь, что вы вызываете 'getHeight()' после просмотра. –

+0

@brian Я привел пример –

1
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout); 
                 ^^^^^^^^^^ 
+2

Возможно, он набрал неправильный вопрос. он бы даже не скомпилировал, если бы это было так. –

+0

Извините, опечатка. Но это еще не так. – brian

+0

см. Имя вашего xml-файла, а также измените идентификатор, а затем проверьте его. –

-6

попробуйте этот код:

public static int getViewDimensions(View v,String what){ 
    int result = 0; 
    if (what.equalsIgnoreCase("height")) { 
     result = v.getHeight(); 
    } else { 
     result = v.getWidth(); 
    } 
    return result; 

} 

затем onBackPressed() вы можете получить widht и высоту любого ViewLinear вам нужно.

@Override 
public void onBackPressed() { 

    RelativeLayout banner = (RelativeLayout)findViewById(R.id.banner); 

    int h = getViewDimensions(banner, "height"); 
    int w = getViewDimensions(banner, "width"); 

    Log.v("Height*Widht", h +"*"+ w); 

} 
+1

Любые причины, по которым вы не предлагали просто вызвать banner.getHeight() или banner.getWidth()? – garlicman

+0

Потому что я хочу знать высоту и ширину многих представлений, поэтому я создал выше функцию. –

+0

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

Смежные вопросы