[英]Android: center Textview in extended Layout
如果我只想設置父視圖的布局並且仍想保留子視圖的布局設置,是否可以以某種方式阻止調用所有子視圖的Layout方法?
目前,我調用parent.layout(),其所有子級的寬度和高度均為零。 我不能以某種方式將子級設置為FillParent而不是將布局設置為ALL嗎? :-(
順便說一句,我的父母是一個擴展的LinearLayout,主要包含Textviews。
編輯:一些代碼:
myLayout擴展了LinearLayout
myLayout.layout(left, top, right, bottom);
myLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1));
for each child in myLayout do {
child.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
if (v instanceof TextView) {
((TextView) v).setGravity(Gravity.CENTER);
}
但是孩子仍然有:
左:0上:0右:0下:0
編輯2:順便說一句:上面的代碼是ViewGroup的onLayout方法的內部。
您可以在擴展LinearLayout的onLayout()
方法中設置子項的寬度和高度。 例如:
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
// set width of every child to FILL_PARENT, and height to WRAP_CONTENT
child.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
}
我不知道為什么setGravity()
對您不起作用。 可能不是為孩子而是為布局設置重力嗎? 我可以設置重力,例如在onLayout()
:
if (child instanceof TextView) {
((TextView) child).setGravity(Gravity.CENTER);
}
您的子視圖未得到衡量(因為您未調用其layout()),因此系統仍認為它們為0x0px。
Android使用2遍測量/布局系統。
查看開發人員文檔,以了解繪圖/布局順序是如何發生的: http : //developer.android.com/guide/topics/ui/how-android-draws.html
您可能想要嘗試調用其layout()
,然后在子級上設置高度/寬度,然后調用requestLayout()
。
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.