我想要一個方形FrameLayout
填充它的父寬度並且其高度與其寬度匹配。我已經嘗試在佈局中添加一個addOnLayoutChangeListener,但我不能從裏面調用requestLayout
,所以我無法告訴它調整大小。Android動態更改佈局大小
我能做些什麼來使它的高度等於它在運行時的寬度?
我想要一個方形FrameLayout
填充它的父寬度並且其高度與其寬度匹配。我已經嘗試在佈局中添加一個addOnLayoutChangeListener,但我不能從裏面調用requestLayout
,所以我無法告訴它調整大小。Android動態更改佈局大小
我能做些什麼來使它的高度等於它在運行時的寬度?
簡單的辦法就是延長FrameLayout
public class SquareFrameLayout extends FrameLayout {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
// or you can use this if you want the square to use width as it basis
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}
使用您的佈局像下面
<your.package.SquareFrameLayout
android:layout_width="match_parent"
......>
<!-- other child views -->
</your.package.SquareFrameLayout>
您獲得您的視圖後只是做以下
ViewGroup.LayoutParams lp = view.getLayoutParams();
Display display = ((AppCompatActivity) context).getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.X;
lp.height = screenWidth;
view.setLayoutParams(lp);
我將以編程方式添加視圖,因爲它會改變。感謝您的回覆! – Nick
不錯的答案,邏輯。它會派上用場 –
我希望不要覆蓋佈局,但你可能是對的,這是最簡單的方法。謝謝! – Nick
@Nick歡迎快樂編碼:) –
@Nick也投票贊成:) –