请告诉我是否有办法达到它的高度。我想我可以通过使用DisplayMetrics获取屏幕高度并进行几乎不可能的计算(至少对我来说)来做到这一点,但这太复杂了。
答案 0 :(得分:9)
尝试ll.getHeight()
应该工作
如果没有,那是因为android还没有计算出它的界限,那么:
//inside of onCreate method should work
ll.post(new Runnable() {
@Override
public void run() {
//maybe also works height = ll.getLayoutParams().height;
height = ll.getHeight();
}
});
答案 1 :(得分:3)
它是-1,因为它的尺寸尚未设置,每当你设置布局时,它需要一些时间来计算实际值,包括高度,宽度等。
使用OnLayoutListener
在完成布局后收听。
layout.onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
//Extract values here
height = view.getHeight();
width = view.getWidth()
}
有关OnLayoutListener
的更多信息,请参阅this答案 2 :(得分:0)
在类中定义LinearLayout并使用getHeight()和getWidth()。例如:
LinearLayout yourLayout = (LinearLayout) findViewById (R.id.yourLL);
double height = yourLayout.getHeight();
double width = yourLayout.getWidth();
希望它有所帮助! :)
答案 3 :(得分:0)
在布局xml文件中提供id
字段:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/<ID>>
使用此id在java类中获取引用并查找高度和宽度:
LinearLayout linearLayout= (LinearLayout) findViewById (R.id.<ID>);
double height = linearLayout.getHeight();
double width = linearLayout.getWidth();