第二章-Android界面布局

1、ViewGroup 和View

ViewGroup是布局,类似我们家的布局,哪里是厨房,哪里是卧室……,
View是控件,类似于家具,哪里放沙发,哪里放电视……;

2、界面布局的编写方式

(1) 在xml文件中编写,通常采用该方式

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="我是xml文件中的控件"
        android:textColor="#ff0000"
        android:textSize="18sp" />

</RelativeLayout>

(2)在Java代码中编写

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //创建布局文件
        RelativeLayout relativeLayout = new RelativeLayout(this);
        //设置参数
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.CENTER_IN_PARENT);
        //创建控件
        TextView textView = new TextView(this);
        textView.setText("我是JAVA代码创建的控件");
        textView.setTextColor(Color.RED);
        textView.setTextSize(18);
        //组装
        relativeLayout.addView(textView, params);
        setContentView(relativeLayout);
    }
}

3 、常见的五种布局

(1)布局的通用属性:

五种布局都继承自ViewGroup,通用属性有6个:
image.png

(2)相对布局:RelativeLayout

控件位置的属性:4组15个
image.png

(3)线性布局:LinearLayout

orientation–写在LinearLayout标签里面
horizontal:水平
vertical:垂直

layout_weight–权重,写在控件里面的,需要把控件的宽度设置成0dp
image.png

(4)表格布局:TableLayout

TableLayout采用行、列的形式来管理控件。通过在TableLayout布局中添加TableRow布局或控件来控制表格行数,在TableRow布局中添加控件来控制表格列数。
TableLayout布局常用属性

属性名称功能描述例子
android:stretchColumns设置可被拉伸的列="0"表示第1列可被拉伸
android:shrinkColumns设置可被收缩的列="1,2"表示2,3列可被收缩
android:collapseColumns设置可被隐藏的列="0"表示第1列可被隐藏

TableLayout布局中控件常用属性

属性名称功能描述例子
android:layout_column设置该控件显示的位置="1"表示在第二个位置显示
android:layout_span设置该控件占据几行,默认为1行

image.png

(5)帧布局:FrameLayout

FrameLayout用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧。后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐

属性名称功能描述
android:foreground设置帧布局容器的前景图像(始终在所有子控件之上)
android:foregroundGravity设置前景图像显示的位置

ConstraintLayout约束布局

ConstraintLayout是_Android Studio_2.2新添加的布局。ConstrainLayout并不太适合使用XML代码的方式编写布局,但非常适合使用可视化的方式编写界面布局
1.相对定位
一个空间相对于另一个空间进行定位。ConstrainLayout布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位。

  • 横向:left、start、right、end
  • 纵向:top、bottom、baseline(文本底部基准线)

相对定位关系的属性
image.png
2.居中定位和倾向
控件可以通过添加约束的方式确定该控件在父布局中的相对位置。当相同方向上,控件两边同时向ConstraintLayout添加约束,则控件在添加约束的方向上居中显示。
两个约束的力大小不等时,就会产生倾向
倾向的属性

属性名称功能描述
layout_constraintHorizontal_bias横向的倾向
layout_constraintVertical_bias纵向的倾向

3.Chain
Chain是一种特殊的约束。它使我们能够对一组水平或垂直方向上互相关联的控件进行统一管理。一组控件通过一个双向的约束关系链接起来,就能形成一个Chain
Chain中第一个控件成为头控件,头控件可以通过layout_constraintHorizontal_chainStyle和 layout_constraintVertical_chainStyle属性设置水平链条和竖直链条的样式

  1. spread:设置控件在布局内均匀分布。
  2. spread_insid:设置两端的控件与父布局无间距显示,其他的控件将在剩余的空间内采用spread样式进行布局
  3. packed:设置Chain中的所有控件合并在一起后在布局内居中显示。

当控件宽或高设置为0dp时,Chain的3种样式可以配合layout_constraintHorizontalweight形成Weighted Chain的样式。
packed可以搭配layoutconstraintHorizontal_bias控制Chain与父容器的间距从而形成packed Chain With Bias样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肉丝不切片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值