Как получить высоту LinearLayout
У меня есть установленная LinearLayout высота как match_parent, как показано ниже:
<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();
Но он возвращает null.
Как я могу сделать?
Ответы
Ответ 1
Прежде всего: ваш LinearLayout
id left_layout
, а не list_layout
.
Кроме того, ll_list.getHeight()
вернет 0 (а также ll_list.getWidth()
), если он еще не выделен.
Решение заключалось бы в том, чтобы получить высоту после того, как ваш вид будет оформлен:
ll_list.post(new Runnable(){
public void run(){
int height = ll_list.getHeight();
}
});
И убедитесь, что ваш ll_list
равен final
.
Ответ 2
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout);
^^^^^^^^^^
Ответ 3
Вам нужно подождать. Просмотр для инициализации. Сначала используйте View Tree Observer, пока он не будет создан. Проверьте
получить высоту и ширину макета во время работы андроида
Ответ 4
попробуйте этот код:
public static int getViewDimensions(View v,String what){
int result = 0;
if (what.equalsIgnoreCase("height")) {
result = v.getHeight();
} else {
result = v.getWidth();
}
return result;
}
then onBackPressed() вы можете получить ширину и высоту любого 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);
}