[英]Android - get Height of the parent layout
我想確定我必須添加視圖的父布局的可用高度和寬度。
我在布局上使用了很多方法
所有這些方法都返回0(零)作為結果。
我的主要要求是能夠為視圖提供寬度,該寬度是布局寬度的百分之一。
此外,我不想使用標簽。 我想通過代碼來做。
提前致謝。
好。 我找到了解決方案。 我們在活動中獲得屏幕高度的方式是
getApplicationContext()。getResources()。getDisplayMetrics()。heightPixels
但我仍然不知道如何獲得父布局的像素尺寸?
這里的問題是你在layoutmanager完成父布局之前嘗試獲取父高度/權重。 在布局完成后,您只能獲得父級維度。
執行您想要實現的目標的推薦方法是使用LayoutParams的layout_weight字段。 鏈接文字
特別是你應該使用:
LayoutParams lp = new LinearLayout.LayoutParams(width, height,
weight);
layout_weight值可以是介於0.0到1.0之間的任何值。 所以例如,如果我在parentLayout中有myButton,並且我希望myButton占據父布局的30%...我會使用類似的東西:
myButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,0.3));
所有子元素的layout_weight總和應為1.此外,layout_weight不應與視圖的寬度或高度設置為LayoutParams.FILL_PARENT一起使用。
嘗試這樣的事情:
view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
view.getHeight();
}
});
以編程方式實現此方法的一種替代方法是使用以下方法:
public void onWindowFocusChanged(boolean b) { ...}
到調用此方法時,布局過程已完成。 因此,您可以正確獲取父屬性。
例如:
public class A extends Activity {
LinearLayout parent;
Button child;
public void onCreate(Bundle b) {
parent = (LinearLayout) findViewById(R.id.linear1);
child = (Button) findViewById(R.id.button1);
.
.
}
@Override
public void onWindowFocusChanged(boolean b) {
LayoutParams lpc = child.getLayoutParams();
lpc.width = parent.getWidth();
child.postInvalidate();
.
.
}
}
在OnCreate()
方法中,如果使用layout.getHeight()
和layout.getWidth()
,它將返回0,而您可以遵循:
public void onClick(View v) {
// TODO Auto-generated method stub
int layWidth = Layout.getLeft();
int layHeight = Layout.getHeight();
break;
}
你很早就調用了getHeight()
。 確保在viewGroup.addView(view0)
和/或setContentView(activity_main.xml)
之后調用getParent().getHeight()
setContentView(activity_main.xml)
。 這在過去發生在我身上並且修復了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.