由于无法设置FrameLayout的Gravity,所以只能通过重写onLayout事件实现居中的效果了
@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) {
super.onLayout(changed, left, top, right, bottom);
// align child to center
int width = right - left;
int height = bottom - top;
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
final View childView = getChildAt(i);
if (childView.getVisibility() != View.GONE) {
final int childLeft = (width - childView.getWidth()) / 2;
final int childTop = (height - childView.getHeight()) / 2;
childView.layout(childLeft, childTop,
childLeft + childView.getWidth(),
childTop + childView.getHeight());
}
}
}
分享到:
相关推荐
例如,你可以设置`gravity="center"`使内容居中,`gravity="right"`使内容靠右,或者`gravity="top"`使其靠上。 接下来,我们来看`layout_gravity`。这个属性主要用在`FrameLayout`和`LinearLayout`(当其`...
- 子视图默认按照从左上角到右下角的顺序进行绘制,但可以通过设置`android:layout_gravity`属性改变其在布局中的位置,例如设置为"top"、"bottom"、"left"、"right"或"center"等。 - FrameLayout的大小由其最大尺寸...
6. `gravity_center_horizontal`: 视图将在水平方向上居中。 7. `gravity_center_vertical`: 视图将在垂直方向上居中。 FrameLayout的一个常见应用场景是创建弹出式菜单或覆盖其他视图的小部件,因为它允许子视图...
例如,`android:layout_gravity="center"`可以使子视图居中显示。 帧布局的典型应用场景包括: 1. 创建对话框或提示框:由于FrameLayout支持子视图的层叠,可以轻松实现覆盖其他界面的效果,常用于制作浮窗或者...
虽然它不如其他如`LinearLayout`、`RelativeLayout`或`ConstraintLayout`那样复杂,但在某些特定的UI设计中,`FrameLayout`的灵活性和简洁性使其成为首选。通过实际操作和源码分析,你将能够更深入地掌握`...
这个属性接受的值有"top"、"bottom"、"left"、"right"、"center"、"center_horizontal"、"center_vertical"等,组合使用可以实现不同的对齐方式。 例如,如果你有两个视图,一个在顶部,另一个在底部,你可以这样...
2. **添加天气图标**:可以使用ImageView加载天气相关的SVG或PNG资源,通过设置`android:layout_gravity`为"center"使其居中。 3. **显示温度**:创建一个TextView,放置在天气图标下方,同样使用`android:layout_...
`layout_gravity`属性控制子视图在FrameLayout中的位置。它可以设置为以下值: - `top`: 对齐到布局顶部。 - `bottom`: 对齐到布局底部。 - `left`: 对齐到布局左侧。 - `right`: 对齐到布局右侧。 - `center`: 居中...
`android:layout_gravity`属性主要在FrameLayout和LinearLayout中使用,以及在Gravity类中定义的各种对齐选项。 ### FrameLayout的`layout_gravity` 在FrameLayout中,所有的子视图都可以设置`layout_gravity`来...
为了确保它位于前景图片下方,可以将`TextView`放置在`ImageView`之后在XML代码中,或者设置其`layout_gravity`为"bottom",使其位于布局底部。 以下是一个简单的XML布局示例,展示了如何实现上述要求: ```xml ...
- `android:layout_gravity`:此属性用于设置子视图在FrameLayout中的对齐方式,例如`top|left`表示左上角,`center`表示居中,`bottom|right`表示右下角。 - `android:layout_margin`:用于设置子视图与...
以下是一个使用FrameLayout的示例,其中包含三个TextView,它们的`layout_gravity`属性被设置为“center”: ```xml android:layout_width="match_parent" android:layout_height="match_parent"> ...
2. **定位**:子视图的位置由`android:layout_gravity`属性决定,可以设置为"top"、"bottom"、"left"、"right"或"center"等值,控制视图在布局中的位置。 3. **尺寸**:如果子视图没有指定特定尺寸,它们将自动填充...
例如,你可以设置为"center"使视图居中,或者设置为"bottom|right"使其位于布局的右下角。由于其简单直接的堆叠方式,FrameLayout常用于需要一个视图完全覆盖另一个视图的情况,如对话框或浮动按钮的背景。 **...
例如,`gravity="center"`将使视图居中显示,`gravity="bottom|right"`将使视图放置在右下角。同时,`gravity`属性还可以结合`layout_width`和`layout_height`来控制视图的大小,实现不同的布局效果。 在提供的代码...
- `android:gravity`: 控制子视图在帧布局中的对齐方式,可选值有"top"、"bottom"、"left"、"right"、"center_vertical"、"center_horizontal"、"center"等,用于调整子视图在帧内的位置。 - `android:layout_margin...
marginTop`使其上移,第三层工位设置`top`和正的`layout_marginTop`以及`layout_marginLeft`使其偏移到上方和右侧,第四层程序猿设置`center`和正的`layout_marginTop`使其下移。 **应用场景** 尽管FrameLayout在...
它的主要属性是`android:layout_gravity`,用于控制控件在布局内的对齐方式,比如可以设置为"top", "bottom", "left", "right"或"center"等。FrameLayout通常用于显示单个主要内容,或者需要简单覆盖效果的场景,...
`Gravity`属性用于指定子视图在FrameLayout中的位置。它可以是水平方向(LEFT, CENTER_HORIZONTAL, RIGHT)和垂直方向(TOP, CENTER_VERTICAL, BOTTOM)的组合,还可以包括CENTER对齐。 6. **应用场景** - **...