Java 如何使用布局权重获取线性布局的高度(以像素为单位)
这是我的第一篇文章。我正在学习为android应用程序编写java代码。 我正在使用一个名为:ll的LinearLayout“变量”,该变量具有预定义的布局重量(我希望在将来随时更改),高度和宽度设置为与父级匹配。我想得到这个线性布局的高度,以像素为单位。我使用java(ll.addView(variableForAnObject);)来填充它。 我试图使用ll.getLayoutParams().height获取其高度;但是我得到了-1。因为我相信这是匹配父母的常数。将高度设置为0dp将使ll不可见,并将高度设置为0Java 如何使用布局权重获取线性布局的高度(以像素为单位),java,android,android-layout,layoutparams,android-layout-weight,Java,Android,Android Layout,Layoutparams,Android Layout Weight,这是我的第一篇文章。我正在学习为android应用程序编写java代码。 我正在使用一个名为:ll的LinearLayout“变量”,该变量具有预定义的布局重量(我希望在将来随时更改),高度和宽度设置为与父级匹配。我想得到这个线性布局的高度,以像素为单位。我使用java(ll.addView(variableForAnObject);)来填充它。 我试图使用ll.getLayoutParams().height获取其高度;但是我得到了-1。因为我相信这是匹配父母的常数。将高度设置为0dp将使ll
请告诉我是否有办法得到它的高度。我想我可以通过使用DisplayMetrics获得屏幕高度并进行几乎不可能的计算(至少对我来说)来做到这一点,但这太复杂了。在类中定义线性布局并使用getHeight()和getWidth()。例如:
LinearLayout yourLayout = (LinearLayout) findViewById (R.id.yourLL);
double height = yourLayout.getHeight();
double width = yourLayout.getWidth();
希望有帮助!:) 尝试使用
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();
}
});
在布局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>>
它是-1,因为它的尺寸尚未设置,无论何时设置布局,都需要一些时间来计算实际值,包括高度、宽度等
使用onlayOutliner
在布局完成后收听
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的更多信息,请参见//可能还包括works height=ll.getLayoutParams().height代码>不,不需要。非常感谢!仍然存在的一个问题是,我在第一次跑步时得了0分。我使用自定义方法填充布局并执行更多操作,并在OnCreate中调用此方法。但是在第一次运行时,我得到0,然后如果我再次使用相同的方法重新填充此布局,那么高度就会得到一个值。我使用ll.removeallview();在填充布局之前。@javi我尝试直接放入onCreate以及我的方法(在onCreate内部)中,但总是得到一个0。我会查这件事的。你能写一下布局文件吗?我将在我的计算机上测试ll.getLayoutParams()。height
返回MATCH\u PARENT
或WRAP\u CONTENT
中的一个。前者为-1,后者为-2
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()
}