mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
NativeScript layouts implemented in Java
This commit is contained in:
78
src/org/nativescript/widgets/ContentLayout.java
Normal file
78
src/org/nativescript/widgets/ContentLayout.java
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.nativescript.widgets;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* @author hhristov
|
||||
*
|
||||
*/
|
||||
public class ContentLayout extends LayoutBase {
|
||||
|
||||
public ContentLayout(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
|
||||
int measureWidth = 0;
|
||||
int measureHeight = 0;
|
||||
|
||||
int count = this.getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
View child = this.getChildAt(i);
|
||||
if (child.getVisibility() == View.GONE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
CommonLayoutParams.measureChild(child, widthMeasureSpec, heightMeasureSpec);
|
||||
final int childMeasuredWidth = CommonLayoutParams.getDesiredWidth(child);
|
||||
final int childMeasuredHeight = CommonLayoutParams.getDesiredHeight(child);
|
||||
|
||||
measureWidth = Math.max(measureWidth, childMeasuredWidth);
|
||||
measureHeight = Math.max(measureHeight, childMeasuredHeight);
|
||||
}
|
||||
|
||||
// Add in our padding
|
||||
measureWidth += this.getPaddingLeft() + this.getPaddingRight();
|
||||
measureHeight += this.getPaddingTop() + this.getPaddingBottom();
|
||||
|
||||
// Check against our minimum sizes
|
||||
measureWidth = Math.max(measureWidth, this.getSuggestedMinimumWidth());
|
||||
measureHeight = Math.max(measureHeight, this.getSuggestedMinimumHeight());
|
||||
|
||||
int widthSizeAndState = resolveSizeAndState(measureWidth, widthMeasureSpec, 0);
|
||||
int heightSizeAndState = resolveSizeAndState(measureHeight, heightMeasureSpec, 0);
|
||||
|
||||
this.setMeasuredDimension(widthSizeAndState, heightSizeAndState);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
|
||||
int paddingLeft = this.getPaddingLeft();
|
||||
int paddingRight = this.getPaddingRight();
|
||||
int paddingTop = this.getPaddingTop();
|
||||
int paddingBottom = this.getPaddingBottom();
|
||||
|
||||
int childLeft = paddingLeft;
|
||||
int childTop = paddingTop;
|
||||
|
||||
int childRight = right - left - (paddingLeft + paddingRight);
|
||||
int childBottom = bottom - top - (paddingRight + paddingBottom);
|
||||
|
||||
int count = this.getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
View child = this.getChildAt(i);
|
||||
if (child.getVisibility() == View.GONE) {
|
||||
continue;
|
||||
}
|
||||
|
||||
CommonLayoutParams.layoutChild(child, childLeft, childTop, childRight, childBottom);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user