【发布时间】:2016-02-05 08:54:58
【问题描述】:
正如您从这张图片中看到的那样,我一直在尝试实现带有方形子代的GridLayout。
所以基本上视图应该根据项目的数量进行调整,而无需我声明列大小和行大小。 GridLayout 有可能吗?如果没有,那么忘记这个问题。
现在让我们进入正方形部分。我尝试实现此代码
public class SquareLinearLayout extends LinearLayout {
public SquareLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
if (widthSize == 0 && heightSize == 0) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
final int minSize = Math.min(getMeasuredWidth(), getMeasuredHeight());
setMeasuredDimension(minSize, minSize);
return;
}
final int size;
if (widthSize == 0 || heightSize == 0) {
size = Math.max(widthSize, heightSize);
} else {
size = Math.min(widthSize, heightSize);
}
final int newMeasureSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
super.onMeasure(newMeasureSpec, newMeasureSpec);
}
}
虽然它确实使子布局成为正方形,但它也占据了屏幕的整个宽度,将其他子布局推出了布局的可视部分。
你有没有链接或者你自己有类似这个类但不占据整个布局宽度的代码?提前致谢。
【问题讨论】:
标签: android android-gridlayout